수색…


비고

VBA의 문자열 리터럴 할당은 IDE의 제한 사항과 현재 사용자의 언어 설정 코드 페이지로 제한됩니다. 위의 예는 이스케이프 된 문자열, 특수한 인쇄 할 수없는 문자열 및 긴 문자열 리터럴의 특수한 경우를 보여줍니다.

특정 코드 페이지와 관련된 문자가 포함 된 문자열 리터럴을 할당 할 때 별도의 유니 코드 리소스 파일에서 문자열을 할당하여 국제화 문제를 고려해야 할 수 있습니다.

이스케이프 "문자

VBA 구문은 문자열 리터럴 내에 표시해야합니다 " 마크, 그래서 당신의 문자열은 인용 부호를 포함 할 필요가있을 때, 당신은 탈출해야합니다 / 전에 추가 " 추가로 문자 " 그래서 VBA 당신이하고자하는 것을 이해 """ 문자열로 해석됩니다.

'The following 2 lines produce the same output
Debug.Print "The man said, ""Never use air-quotes"""
Debug.Print "The man said, " & """" & "Never use air-quotes" & """"

'Output:
'The man said, "Never use air-quotes"
'The man said, "Never use air-quotes"

긴 문자열 리터럴 할당

VBA 편집기는 줄당 1023 자까지만 허용하지만 일반적으로 처음 100-150 자만 스크롤하지 않고도 볼 수 있습니다. 긴 문자열 리터럴을 할당해야하지만 코드를 읽을 수 있도록 유지하려면 줄 연속 및 연결을 사용하여 문자열을 할당해야합니다.

Debug.Print "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " & _
            "Integer hendrerit maximus arcu, ut elementum odio varius " & _
            "nec. Integer ipsum enim, iaculis et egestas ac, condiment" & _
            "um ut tellus."
'Output:
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit maximus arcu, ut elementum odio varius nec. Integer ipsum enim, iaculis et egestas ac, condimentum ut tellus.

VBA를 사용하면 제한된 수의 줄 연속 문자를 사용할 수 있습니다 (실제 줄 수는 연속 줄 내의 각 줄의 길이에 따라 다릅니다). 매우 긴 줄이 있으면 연결을 할당하고 다시 할당해야합니다 .

Dim loremIpsum As String

'Assign the first part of the string
loremIpsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " & _
              "Integer hendrerit maximus arcu, ut elementum odio varius "
'Re-assign with the previous value AND the next section of the string
loremIpsum = loremIpsum & _
            "nec. Integer ipsum enim, iaculis et egestas ac, condiment" & _
            "um ut tellus."

Debug.Print loremIpsum

'Output:
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit maximus arcu, ut elementum odio varius nec. Integer ipsum enim, iaculis et egestas ac, condimentum ut tellus.

VBA 문자열 상수 사용

VBA는 다음과 같은 특수 문자에 대한 문자열 상수의 수를 정의합니다.

  • vbCr : 캐리지 리턴 C 스타일 언어에서 "\ r"과 동일합니다.
  • vbLf : Line-Feed 'C 스타일의 언어에서 "\ n"과 동일합니다.
  • vbCrLf : 캐리지 리턴 및 줄 바꿈 (Windows의 줄 바꿈)
  • vbTab : 탭 문자
  • vbNullString : 빈 문자열 (예 : "")

이러한 상수를 연결 및 기타 문자열 함수와 함께 사용하여 특수 문자로 문자열 리터럴을 작성할 수 있습니다.

Debug.Print "Hello " & vbCrLf & "World"
'Output:
'Hello
'World

Debug.Print vbTab & "Hello" & vbTab & "World"
'Output:
'    Hello    World

Dim EmptyString As String
EmptyString = vbNullString
Debug.Print EmptyString = ""
'Output:
'True

vbNullString 사용하는 것은 코드 컴파일 방법의 차이 때문에 "" 의 동등한 값보다 나은 것으로 간주됩니다. 문자열은 할당 된 메모리 영역에 대한 포인터를 통해 액세스되며 VBA 컴파일러는 null 포인터를 사용하여 vbNullString 을 나타낼만큼 충분히 똑똑합니다. 리터럴 "" 은 문자열 형식의 Variant 인 것처럼 메모리에 할당되므로 훨씬 효율적으로 상수를 사용할 수 있습니다.

Debug.Print StrPtr(vbNullString)    'Prints 0.
Debug.Print StrPtr("")              'Prints a memory address.


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow