sourcecode

vba에서 문자열에 큰따옴표를 넣으려면 어떻게 해야 합니까?

codebag 2023. 4. 28. 20:34
반응형

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

반응형