使用 VBA 当两个字符串不同时 StrComp 返回 false
我正在尝试比较 VBA 中的两个字符串值,但我发现了 VBA 的一个奇怪的怪癖(或者看起来如此)。见下文:
如果我执行以下操作:
Debug.Print("Same" & StrComp(Me.txtFirstName.Value, Me.txtFirstName.Value, vbTextCompare))
Debug.Print("Different" & StrComp(Me.txtFirstName.Value, Me.txtFirstName.OldValue, vbTextCompare))
我得到:
Same: 0
Different: 1
这是我所期望的。然而。如果我然后尝试执行以下操作:
Debug.Print("Same" & StrComp(Me.txtFirstName.Value, Me.txtFirstName.Value, vbTextCompare) = 0)
Debug.Print("Different" & StrComp(Me.txtFirstName.Value, Me.txtFirstName.OldValue, vbTextCompare) = 0)
然后我得到:
Same: False
Different: False
作为参考,值应该是(例如)
Same test: "Jane", "Jane"
Different test: "Jane", "John"
这不是我所期望的。我知道我做错了什么,但我不确定是什么。
任何帮助表示赞赏。
编辑:
当我现在将其输入 if 语句时:
If (StrComp(Me.txtFirstName.Value, Me.txtFirstName.OldValue, vbTextCompare) = 0) Then
Debug.Print ("Hello")
Else
Debug.Print ("Goodbye")
End If
我得到的结果是 Goodbye
I'm trying to compare two string values in VBA but I've found a weird quirk of VBA ( or it seems so ). See Below:
If I do the following:
Debug.Print("Same" & StrComp(Me.txtFirstName.Value, Me.txtFirstName.Value, vbTextCompare))
Debug.Print("Different" & StrComp(Me.txtFirstName.Value, Me.txtFirstName.OldValue, vbTextCompare))
I get:
Same: 0
Different: 1
Which is something I would expect. However. If I then try to do the following:
Debug.Print("Same" & StrComp(Me.txtFirstName.Value, Me.txtFirstName.Value, vbTextCompare) = 0)
Debug.Print("Different" & StrComp(Me.txtFirstName.Value, Me.txtFirstName.OldValue, vbTextCompare) = 0)
I then get:
Same: False
Different: False
For reference, the values should be (for example)
Same test: "Jane", "Jane"
Different test: "Jane", "John"
Which is not what I expect. I know I'm doing something incorrectly but I'm not exactly sure what.
Any help is appreciated.
EDIT:
When I now enter this into an if statement:
If (StrComp(Me.txtFirstName.Value, Me.txtFirstName.OldValue, vbTextCompare) = 0) Then
Debug.Print ("Hello")
Else
Debug.Print ("Goodbye")
End If
I get a result of Goodbye
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的问题是它首先连接
"Different" & StrComp(Me.txtFirstName.Value, Me.txtFirstName.OldValue
,然后与=0
进行比较。并且
Different1
不是0
> 因此你会得到False
。在连接之前使用括号来评估比较:
实际上这段代码
应该以类型不匹配错误结束。
Your issue is that it first concatentates
"Different" & StrComp(Me.txtFirstName.Value, Me.txtFirstName.OldValue
and then compares that with=0
.And
Different1
is not0
therefore you getFalse
.use parenthesis to evaluate the comparison before concatenating:
Actually this code
should have end up in a Type Mismatch error.