奇怪的是大于或小于结果

时间:2014-07-18 20:30:44

标签: excel vba excel-vba

我面临一个奇怪的问题,真的不确定原因:(

所以看看下面的内容(所有细胞形成为2 d.p的百分比):

Sheet http://im61.gulfup.com/xXpJZu.png

现在这里是Code1:

If Worksheets("Sheet1").Range("A2").Value < Worksheets("Sheet1").Range("B2").Value Then
MsgBox "Yes"
Else
MsgBox "Nope"
End If

结果:正常工作并显示&#34; Nope&#34;自从&#34; Text&#34;不能少于一个数字/百分比。

代码2:

If Worksheets("Sheet1").Range("A2").Value > Worksheets("Sheet1").Range("B2").Value Then
MsgBox "Yes"
Else
MsgBox "Nope"
End If

结果:无法正常工作并显示&#34;是&#34;。这就是问题所在。我不明白为什么它会考虑“#34; Text&#34;大于&#34; 10%&#34;或&#34; 0.1&#34;。

我想了一下,问题可能在于格式化单元格,所以我将其更改为General&amp;然后到文本,但我仍然得到相同的结果。

另外,最令我惊讶的是,当我投入&#34;&lt;&#34;签名它正常工作,但使用&#34;&gt;&#34;时给出错误的结果登录。

我错过了什么?

2 个答案:

答案 0 :(得分:7)

首先请务必注意Range(...).Value的类型为Variant,您可以使用观察窗口进行确认。

然后在Relational Operators的msdn VBA语言参考页面的底部找到答案:

  

•上述两个规则都有例外情况   操作数具有声明类型的Variant,最初具有一个操作数   值类型为String,另一个操作数最初具有   数值类型。在这种情况下,将考虑数字操作数   小于(而不等于)String操作数,不管是什么   他们的价值观。

答案 1 :(得分:1)

当比较字符串和数字时,比较合并到文本比较,为了得到你想要的结果,你必须包含一个像这样的ISNUMBER()测试,其中formuls显示在第1行:

enter image description here