vba에서 문자열에 큰따옴표를 넣으려면 어떻게 해야 합니까?
나는 이중 따옴표가 포함된 if 문을 vba를 통해 셀에 삽입하고 싶습니다.
내 코드는 다음과 같습니다.
Worksheets("Sheet1").Range("A1").Value = "=IF(Sheet1!B1=0,"",Sheet1!B1)"
큰따옴표 때문에 문자열을 삽입하는 데 문제가 있습니다.큰따옴표는 어떻게 처리합니까?
가장 쉬운 방법은 인용문을 두 배로 늘려 인용문을 처리하는 것입니다.
Worksheets("Sheet1").Range("A1").Formula = "IF(Sheet1!A1=0,"""",Sheet1!A1)"
어떤 사람들은 CHR(34)*을 사용하기를 좋아합니다.
Worksheets("Sheet1").Range("A1").Formula = "IF(Sheet1!A1=0," & CHR(34) & CHR(34) & ",Sheet1!A1)"
*참고: CAR()은 Excel 셀 공식으로 사용되며, 예를 들어 셀에 "=CHAR(34)"를 적지만 VBA 코드의 경우 CHR() 함수를 사용합니다.
또 다른 해결 방법은 임시 대체 문자로 문자열을 구성하는 것입니다.그런 다음 바꾸기를 사용하여 각 임시 문자를 큰따옴표로 변경할 수 있습니다.임시 대체 문자로 타일드를 사용합니다.
여기 제가 진행하고 있는 프로젝트의 예가 있습니다.이것은 셀이 실수로 밟혔을 때 매우 복잡한 공식을 수리하기 위한 작은 유틸리티 루틴입니다.세포에 들어가는 것은 어려운 공식이지만, 이 작은 유틸리티는 즉시 그것을 수정합니다.
Sub RepairFormula()
Dim FormulaString As String
FormulaString = "=MID(CELL(~filename~,$A$1),FIND(~[~,CELL(~filename~,$A$1))+1,FIND(~]~, CELL(~filename~,$A$1))-FIND(~[~,CELL(~filename~,$A$1))-1)"
FormulaString = Replace(FormulaString, Chr(126), Chr(34)) 'this replaces every instance of the tilde with a double quote.
Range("WorkbookFileName").Formula = FormulaString
이것은 정말 단순한 프로그래밍 트릭이지만 VBA 코드에 공식을 입력하는 것을 꽤 쉽게 만듭니다.
문자열 주위에 있는 큰따옴표 안의 모든 큰따옴표는 두 배로 변경해야 합니다.예를 들어 저는 json 파일 문자열 중 하나인 "delivery": "Standard", Vba Editor에서 "delivery": "Standard"로 변경했으며 모든 것이 올바르게 작동합니다.만약 당신이 비슷한 문자열을 많이 삽입해야 한다면, 제 제안은 먼저 "" 사이에 모두 삽입한 다음 "" 내부로 VBA 편집기로 교체합니다.실수할 경우 VBA 편집기에 이 줄이 빨간색으로 표시되고 이 오류를 수정합니다.
저는 셀에서 클립보드로 공식을 복사하는 작은 루틴을 썼는데, 이것은 Visual Basic Editor에 쉽게 붙여 넣을 수 있습니다.
Public Sub CopyExcelFormulaInVBAFormat()
Dim strFormula As String
Dim objDataObj As Object
'\Check that single cell is selected!
If Selection.Cells.Count > 1 Then
MsgBox "Select single cell only!", vbCritical
Exit Sub
End If
'Check if we are not on a blank cell!
If Len(ActiveCell.Formula) = 0 Then
MsgBox "No Formula To Copy!", vbCritical
Exit Sub
End If
'Add quotes as required in VBE
strFormula = Chr(34) & Replace(ActiveCell.Formula, Chr(34), Chr(34) & Chr(34)) & Chr(34)
'This is ClsID of MSFORMS Data Object
Set objDataObj = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
objDataObj.SetText strFormula, 1
objDataObj.PutInClipboard
MsgBox "VBA Format formula copied to Clipboard!", vbInformation
Set objDataObj = Nothing
End Sub
원래는 Chandoo.org 포럼의 Vault 섹션에 게시되어 있습니다.
글로벌 변수를 만드는 것을 선호합니다.
Public Const vbDoubleQuote As String = """" 'represents 1 double quote (") Public Const vbSingleQuote As String = "'" 'represents 1 single quote (')
다음과 같이 사용합니다.
Shell "explorer.exe " & vbDoubleQuote & sPath & vbDoubleQuote, vbNormalFocus
언급URL : https://stackoverflow.com/questions/9024724/how-do-i-put-double-quotes-in-a-string-in-vba
'sourcecode' 카테고리의 다른 글
Xcode 10, UI 요소는 어디에 있습니까? (0) | 2023.05.03 |
---|---|
WPF 데이터 템플릿이 목록 상자의 전체 너비를 채우도록 하려면 어떻게 해야 합니까? (0) | 2023.05.03 |
목록에 없는 값에 바인딩된 편집 가능한 ComboBox (0) | 2023.04.28 |
단일 명령으로 Excel 셀의 내용 및 형식 지우기 (0) | 2023.04.28 |
VBA에서 Excel 파일 이름/경로를 가져오는 방법 (0) | 2023.04.28 |