我正在尝试创建一个将希腊字符转换为拉丁文的替代方法()。在excel中声明一个Unicode格式的字符串字符串
的问题是,宣称
Dim Source As String
Source = "αβγδεζηικλμνξοπρστθφω"
源之后被解释为“áâãäåæçéêëìíîïðñóôõöù”
有没有在声明级别的任何方式使用Unicode?
我正在尝试创建一个将希腊字符转换为拉丁文的替代方法()。在excel中声明一个Unicode格式的字符串字符串
的问题是,宣称
Dim Source As String
Source = "αβγδεζηικλμνξοπρστθφω"
源之后被解释为“áâãäåæçéêëìíîïðñóôõöù”
有没有在声明级别的任何方式使用Unicode?
您可以尝试StrConv
:
StrConv("αβγδεζηικλμνξοπρστθφω", vbUnicode)
来源:http://www.techonthenet.com/excel/formulas/strconv.php
[编辑]另一种解决方案:
你可以得到每一个希腊字母(大写和小写),由于此过程:
Sub x()
Dim i As Long
For i = 913 To 969
With Cells(i - 912, 1)
.Formula = "=dec2hex(" & i & ")"
.Offset(, 1).Value = ChrW$(i)
End With
Next i
End Sub
您可以创建一个数组来查找字符。
来源:http://www.excelforum.com/excel-programming/636544-adding-greek-letters.html
[编辑2]这是建立你想要的串子:你说你的源被解释为 “áâãäåæçéêëìíîïðñóôõöù”
Sub greekAlpha()
Dim sAlpha As String
Dim lLetter As Long
For lLetter = &H3B1 To &H3C9
sAlpha = sAlpha & ChrW(lLetter)
Next
End Sub
。
注意,Visual Basic编辑器不显示统一,但it does support manipulating Unicode strings:
Dim strValue As String
strValue = Range("A1").Value
Range("B1").Value = Mid(strValue, 3)
Range("C1").Value = StrReverse(strValue)
如果A1包含希腊字符,B1和C1将运行此代码后,也包含希腊字符。
您只是无法在立即窗口或MsgBox中正确查看值。
如前所述,VBA不支持Unicode字符串,但你不能写你的代码中的Unicode字符串,因为VBA编辑器只允许VBA文件,以对8位代码页Windows-1252
进行编码。
但是,您可以转换成Unicode字符串的二进制相当于您希望:
str = StrConv("±²³´µ¶·¹º»¼½¾¿ÀÁÃĸÆÉ", vbFromUnicode)
'str value is now "αβγδεζηικλμνξοπρστθφω"
用记事本将字符串转换:复制粘贴unicode字符串,将文件保存为Unicode(UTF-不8),并将其打开为ASCII(实际上是Windows-1252),然后将其复制粘贴到VBA编辑器中,但不包含前两个字符(ÿþ),即BOM标记
“将希腊字符转换为拉丁文”这是什么意思? α变成a,β变成b,γ变成g等。如果是这样,ζ,η,ξ应该转换成什么? –
我有我自己的目标字符串,我有转换。它基本上,没关系.. – Stavros
可能重复[如何在Visual Basic编辑器中键入货币符号](http://stackoverflow.com/questions/24384952/how-to-type-currency-symbols-in-visual - 基本编辑器) – GSerg