1

我正在使用一个excel文件,它的单元格包含°C符号和其他字符串(例如.. -40°C)

我正在尝试使用该单元格的值

    Dim strIn As String
    strIn = Range("B2").Text

一切正常,strIn 的值为“-40°C”,但一旦我更改了我的区域设置,如下所示..

区域设置

它开始将 strIn 值显示为“-40?c”

调试模式

0° 符号更改为 ??

在此先感谢您的帮助.. Liyo Jose。

4

3 回答 3

2

这是 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
于 2012-10-09T14:40:19.837 回答
0

假设您的符号永远不会影响价值,val应该为您提供您所追求的数据。

示例数据:

文本值()
40°C 40
40?C 40
40%C 40
40℃ 40
于 2012-10-09T16:28:08.203 回答
0

一种快速的解决方案是替换“?” 字符串中的符号。像这样的声明

strIn = Replace(strIn, "?", "°")

应该能解决你的问题

于 2012-10-09T13:45:38.030 回答