【问题标题】:VBA string comparison failureVBA 字符串比较失败
【发布时间】:2015-12-09 13:47:24
【问题描述】:

我在比较两个字符串时遇到了有趣的问题。我从文件中读取数据,一切正常。但是后来同事给我发了输入文件,它只是工作文件的 CTRL+C 和 CTRL+V。然后奇迹发生了! VBA 很困惑​​,无法比较两个简单的字符串,我从椅子上摔了下来。

如果您查看图像,您可以看到如果条件是两个相同的字符串,则比较通过了,但它不应该。我有点困惑这是怎么发生的。

所以遇到了这样的人?我真的开始考虑终结者的机器革命之类的东西。 (文件都保存在notepad++中,没有奇怪的字符或类似的东西)

进度更新
所以我尝试了下面 cmets 中的人的提示。并以这样的方式结束

If CStr(Trim(rowArray(4))) <> (CStr("N/A")) Then

rowArray(4) 的内容仍然是“N/A”字符串,如上图所示,excel 仍然认为这个字符串不一样。我还在 pspad、netbeans 和普通记事本中保存了文件,问题还是一样。

【问题讨论】:

  • 请将您的代码嵌入到帖子中,而不是图片中,我们也看不到 rowArray(4)-"N/A" 下方的内容,这对于解决问题可能很重要。
  • 你试过If CStr(rowArray(4)) &lt;&gt; CStr("N/A") Then吗?
  • @ScottHoltzman 由于 rowArray(4) 变量的内容,我需要将其作为图片发送。其余代码并不重要,因为问题在条件
  • Notepad++ 中放入空白字符很麻烦 - 尝试使用 Trim(rowArray(4)) 看看是否得到相同的结果
  • @LubošSuk 只是为了查看它是否是另一个无法显示的字符 - 您是否尝试过在即时窗口中执行 ?Len(rowArray(4)) 并确保您得到 3 作为结果?

标签: string vba excel string-comparison


【解决方案1】:

使用即时窗口测试变量的内容:

For i = 1 To Len(rowArray(4)): Print Asc(Mid(rowArray(4), i, 1)): Next

这将打印字符串中每个字符的 ASCII 值 - 您可以使用它来确定导致问题的额外字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-05
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多