我正在使用一个excel文件,它的单元格包含°C符号和其他字符串(例如.. -40°C)
我正在尝试使用该单元格的值
Dim strIn As String
strIn = Range("B2").Text
一切正常,strIn 的值为“-40°C”,但一旦我更改了我的区域设置,如下所示..
它开始将 strIn 值显示为“-40?c”
0° 符号更改为 ??
在此先感谢您的帮助.. Liyo Jose。
我正在使用一个excel文件,它的单元格包含°C符号和其他字符串(例如.. -40°C)
我正在尝试使用该单元格的值
Dim strIn As String
strIn = Range("B2").Text
一切正常,strIn 的值为“-40°C”,但一旦我更改了我的区域设置,如下所示..
它开始将 strIn 值显示为“-40?c”
0° 符号更改为 ??
在此先感谢您的帮助.. Liyo Jose。
这是 VBA IDE 中的一个限制。它总共只能显示 255 个不同的字符(其中一些不可打印)。这将是标准 Ansii 的前 128 个字符,然后其余的将由您的区域设置中的代码确定。
VBA 显示?因为它无法显示°(因为°不在您设置的字符代码列表中)。当您浏览其余代码时,它应该完全按照您的预期执行,并正确地将 ° 读取到您的工作表中。
如果要在 VBA 中使用°,则需要使用它的字符代码。根据我的测试,您Chrw(176)
至少可以在我的计算机上生成它(是的,我确实为您将区域设置更改为泰语)。要检查代码,您可以循环运行它们。现在正如我之前所说,IDE 将显示 ?,但 Excel 将显示 °。
您可以通过在您的代码上运行此测试来确认这一点:
debug.print Instr(strIn, "?")
'Should be 0
debug.print Instr(strIn, chrw(176))
'Should be 4
假设您的符号永远不会影响价值,val
应该为您提供您所追求的数据。
示例数据:
文本值() 40°C 40 40?C 40 40%C 40 40℃ 40
一种快速的解决方案是替换“?” 字符串中的符号。像这样的声明
strIn = Replace(strIn, "?", "°")
应该能解决你的问题