수색…
소개
VBA 코드의 비 라틴 텍스트
스프레드 시트 셀 A1에는 다음 아랍어 팡ram이 있습니다.
صف خلق خود كمثل الشمس إذ بزغت - يحظى الضجيع بها نجلاء معطار
VBA는 멀티 바이트 문자 코드로 작업 할 수있는 AscW
및 ChrW
기능을 제공합니다. Byte
배열을 사용하여 문자열 변수를 직접 조작 할 수도 있습니다.
Sub NonLatinStrings()
Dim rng As Range
Set rng = Range("A1")
Do Until rng = ""
Dim MyString As String
MyString = rng.Value
' AscW functions
Dim char As String
char = AscW(Left(MyString, 1))
Debug.Print "First char (ChrW): " & char
Debug.Print "First char (binary): " & BinaryFormat(char, 12)
' ChrW functions
Dim uString As String
uString = ChrW(char)
Debug.Print "String value (text): " & uString ' Fails! Appears as '?'
Debug.Print "String value (AscW): " & AscW(uString)
' Using a Byte string
Dim StringAsByt() As Byte
StringAsByt = MyString
Dim i As Long
For i = 0 To 1 Step 2
Debug.Print "Byte values (in decimal): " & _
StringAsByt(i) & "|" & StringAsByt(i + 1)
Debug.Print "Byte values (binary): " & _
BinaryFormat(StringAsByt(i)) & "|" & BinaryFormat(StringAsByt(i + 1))
Next i
Debug.Print ""
' Printing the entire string to the immediate window fails (all '?'s)
Debug.Print "Whole String" & vbNewLine & rng.Value
Set rng = rng.Offset(1)
Loop
End Sub
아랍 문자에 대한 다음과 같은 결과가 나타납니다.
첫 번째 char (ChrW) : 1589
첫 번째 char (바이너리) : 00011000110101
문자열 값 (텍스트) :?
문자열 값 (AscW) : 1589
바이트 값 (십진수) : 53 | 6
바이트 값 (바이너리) : 00110101 | 00000110전체 문자열
??? ????? ????? ??????? ??????? ??? ??????? - ????? ???????? ???? ??????? ???????
문자열 기능이 제대로 작동하더라도 VBA에서는 라틴어가 아닌 텍스트를 직접 창에 인쇄 할 수 없습니다. 이는 언어가 아닌 IDE의 제한 사항입니다.
비 라틴어 식별자 및 언어 적용 범위
VBA 식별자 (변수 및 함수 이름)는 라틴 스크립트를 사용할 수 있으며 일본어 , 한국어 , 중국어 간체 및 중국어 번체 스크립트를 사용할 수도 있습니다.
확장 된 라틴어 스크립트는 여러 언어에 대해 다음과 같은 내용을 다룹니다.
영어, 프랑스어, 스페인어, 독일어, 이탈리아어, 브르타뉴 어, 카탈로니아 어, 덴마크어, 에스토니아어, 핀란드어, 아이슬란드 어, 인도네시아어, 아이랜드어, Lojban, Mapudungun, 노르웨이어, 포르투갈어, 스코틀랜드 게 일어, 스웨덴어, 타갈로그어
일부 언어는 부분적으로 만 적용됩니다.
아제 리어, 크로아티아어, 체코 어, 에스페란토어, 헝가리어, 라트비아어, 리투아니아어, 폴란드어, 루마니아어, 세르비아어, 슬로바키아어, 슬로베니아어, 터키어, 요 루바 어, 웨일스 어
일부 언어는 거의 또는 전혀 적용되지 않습니다.
아랍어, 불가리아어, 체로키 어, Dzongkha, 그리스어, 힌디어, 마케도니아 어, 말라 얄 람어, 몽골어, 러시아어, 산스크리트어, 태국어, 티베트어, 우르두어, 위구르어
다음 변수 선언은 모두 유효합니다.
Dim Yec’hed As String 'Breton
Dim «Dóna» As String 'Catalan
Dim fræk As String 'Danish
Dim tšellomängija As String 'Estonian
Dim Törkylempijävongahdus As String 'Finnish
Dim j’examine As String 'French
Dim Paß As String 'German
Dim þjófum As String 'Icelandic
Dim hÓighe As String 'Irish
Dim sofybakni As String 'Lojban (.o’i does not work)
Dim ñizol As String 'Mapudungun
Dim Vår As String 'Norwegian
Dim «brações» As String 'Portuguese
Dim d’fhàg As String 'Scottish Gaelic
VBA IDE에서 변수 이름 내의 단일 어포 스트로피는 줄을 주석으로 바꾸지 않습니다 (스택 오버플로 에서처럼).
또한 따옴표«»를 나타 내기 위해 두 개의 각도를 사용하는 언어는 변수 이름에있는 따옴표를 사용하는 것이 허용되지 않습니다.