我有一个用VBA编写的Excel应用程序,该应用程序与北美地区以及欧洲地区的用户都可以正常工作。但是对于中国用户而言,相同的应用程序效果不佳。
在用户系统上调试时,我发现“±” 的代码已更改为“?。
有人可以帮我吗?
此应用程序从隐藏的工作表中获取数据并在Excel中的UI中进行复制。我尝试更改语言设置,但是没有用。
If ext_mould_Search3.Range("G" & rowPointer) Like "*" & "±" & "*" Then
ext_mould_Search3.Range("G" & rowPointer).Select
ActiveCell.Replace What:=" ", Replacement:=vbNullString, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
MyText = ext_mould_Search3.Range("G" & rowPointer).Value
Density = Left(MyText, Len(MyText) - 5)
Else
Density = ext_mould_Search3.Range("G" & rowPointer)
End If
'Get data from the selected row
materialName = ext_mould_Search3.Range("D" & rowPointer)
Shore = ext_mould_Search3.Range("H" & rowPointer)
sap = ext_mould_Search3.Range("I" & rowPointer)
family = ext_mould_Search3.Range("J" & rowPointer)
short = ext_mould_Search3.Range("R" & rowPointer)
答案 0 :(得分:0)
您可以尝试对该字符串使用Unicode字符,如下所示:
If ext_mould_Search3.Range("G" & rowPointer) Like "*" & chrw(&H00B1) & "*" Then
这可能会解决您的问题。值得一试。
答案 1 :(得分:0)
中国开发者无法正确看到±
的原因是由于他们使用的编码。通常,对于不在“ ASCII字符代码表” 1中的字符,建议遵循以下规则:
Settings
或类似名称; 您的情况是这样的:
If ext_mould_Search3.Range("G" & rowPointer) Like "*" & tblSettings.Range("A1") & "*" Then
如果要大量使用它,请考虑参考该工作表,制作一个带有只读常量的附加类。例如:
Property Get GermanAE()
GermanAE = tblSettings.Range("A1").Value2
End Property
这可以通过以下方式调用:
Public Sub TestMe()
Dim DedicatedStrings As New DedicatedStrings
Debug.Print DedicatedStrings.GermanAE 'ä
End Sub
如果仅使用少数几个,则可以考虑在Excel中使用named ranges,并像这样[GermanAE]
来调用字符(或整个字符串),因为它看起来也很容易理解: / p>
如果ext_mould_Search3.Range(“ G”和rowPointer)像“ ”&[GermanAE]和“ ”这样,则
这是一篇有关编码的非常好的文章,解释了为什么所有设置的前128个字符都完全相同: