खोज…


परिचय

वीबीए यूनिकोड का उपयोग करके किसी भी भाषा या लिपि में तार को पढ़ और लिख सकता है। हालांकि, पहचानकर्ता टोकन के लिए जगह में कड़े नियम हैं।

गैर-लैटिन पाठ VBA कोड में

स्प्रेडशीट सेल A1 में, हमारे पास निम्नलिखित अरबी पैंग्राम है:

صِف َِلقَ خَودك كَمِلش الشَمسَ غ بَزَإِذَت - يَحظى الضَجيعُ بِها نَللءءَ مِعطارِ

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

यह अरबी लेटर सैड के लिए निम्न आउटपुट का उत्पादन करता है:

पहला चार (ChrW): 1589
पहला चार (बाइनरी): 00011000110101
स्ट्रिंग मान (पाठ):?
स्ट्रिंग मान (AscW): 1589
बाइट मान (दशमलव में): 53 | 6 |
बाइट मान (बाइनरी): 00110101 | 00000110

पूरे स्ट्रिंग
??? ????? ????? ??????? ??????? ??? ??????? - ????? ???????? ???? ??????? ???????

ध्यान दें कि स्ट्रिंग कार्य सही ढंग से काम करते हुए भी VBA गैर-लैटिन पाठ को तत्काल विंडो में प्रिंट करने में असमर्थ है। यह आईडीई की एक सीमा है, न कि भाषा।

गैर-लैटिन पहचानकर्ता और भाषा कवरेज

VBA आइडेंटिफ़ायर (चर और फ़ंक्शन नाम) लैटिन लिपि का उपयोग कर सकते हैं और जापानी , कोरियाई , सरलीकृत चीनी और पारंपरिक चीनी लिपियों का उपयोग करने में भी सक्षम हो सकते हैं।

विस्तारित लैटिन स्क्रिप्ट में कई भाषाओं के लिए पूर्ण कवरेज है:
अंग्रेजी, फ्रेंच, स्पेनिश, जर्मन, इतालवी, ब्रेटन, कैटलन, डेनिश, एस्टोनियाई, फिनिश, आइसलैंडिक, इंडोनेशियाई, आयरिश, Lojban, Mapudungun, नार्वेजियन, पुर्तगाली, स्कॉटिश गेलिक, स्वीडिश, तागालोग

कुछ भाषाएँ केवल आंशिक रूप से कवर की जाती हैं:
Azeri, क्रोएशियाई, चेक, एस्पेरांतो, हंगेरियन, लातवियाई, लिथुआनियाई, पोलिश, रोमानियाई, सर्बियाई, स्लोवाक, स्लोवेनियाई, तुर्की, योरूबा, वेल्श

कुछ भाषाओं में बहुत कम या कोई कवरेज नहीं है:
अरबी, बल्गेरियाई, चेरोकी, दोज़ोंगख, ग्रीक, हिंदी, मैसेडोनियन, मलयालम, मंगोलियाई, रूसी, संस्कृत, थाई, तिब्बती, उर्दू, उइगर

निम्नलिखित चर घोषणाएँ सभी मान्य हैं:

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 में, वैरिएबल नाम के भीतर एक एकल एपोस्ट्रोफ लाइन को एक टिप्पणी में नहीं बदलता है (जैसा कि स्टैक ओवरफ्लो पर होता है)।

इसके अलावा, भाषाएँ जो एक उद्धरण को इंगित करने के लिए दो कोणों का उपयोग करती हैं «» को चर नामों में उन लोगों का उपयोग करने की अनुमति है जो इस तथ्य को खारिज करते हैं कि "" -टाइप उद्धरण नहीं हैं।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow