2014-09-24 113 views
-1

我想把所有希臘字母放入數組中,除了o和v,因爲他們看起來像英文字母。我可以使用十六進制代碼,但這很麻煩,因爲它們是用字母來完成的。 ascii代碼工作得更好。當我使用此代碼希臘字母ascii在vba excel

代碼:

Dim variables2(23) 
j = 0 
For i = 1 To 25 
    If i = 13 Or i = 15 Then 
    Else 
    j = j + 1 
    variables2(j) = AscW((944 + i)) 
    End If 
Next 

整個數組被充滿57.但是當我使用此代碼

代碼:

MsgBox AscW(Range("c4031").Value) 

和地點阿爾法在適當的單元格出現的數字是945. 我的問題是爲什麼當我做變量2(j)= AscW((944 + i))時希臘字母不會填充到數組中?

回答

2

您需要使用ChrW功能,而不是AscW功能。 AscW函數將unicode字符轉換爲其unicode/utf-16代碼單元ChrW函數將數字unicode代碼單元轉換爲其unicode字符串/字符表示

Sub greekToMe() 
Dim variables2(23) 
j = 0 
For i = 1 To 25 
    If i = 13 Or i = 15 Then 
    Else 
    j = j + 1 
    variables2(j) = ChrW((944 + i)) 
    End If 
Next 
'Review the conversion on a worksheet: 
Range("A1:A24").Value = variables2 

End Sub 
+0

謝謝,這是做到了。 – user147178 2014-09-24 21:03:44

+0

乾杯,如果這已解決您的問題,請考慮[接受答案](http://stackoverflow.com/help/someone-answers)。 :) – 2014-09-24 21:12:05

+1

實際上,'ChrW'將數字_Unicode/UTF-16代碼unit_轉換爲字符串值。 ASCII是古老的。 – 2014-09-25 00:05:34

0

AscW返回字符串第一個字符的整數代碼。循環的每次迭代調用AscW,以9和57開頭的數字爲9的代碼。

您想使用ChrW而不是AscW。

+0

重複的答案... – 2014-09-24 21:02:14