Excel VBA instr if 语句为 false

Posted

技术标签:

【中文标题】Excel VBA instr if 语句为 false【英文标题】:Excel VBA instr if statement false 【发布时间】:2013-07-09 19:55:44 【问题描述】:

我试图寻找值 2,但是显示的是“不应该发生”而不是“好的”。

If Not InStr("1, 2, 3", "2") Then
    MsgBox ("shouldn't happen")
Else
    MsgBox ("ok")
End If

我们知道该值在字符串中。但由于某种原因,“不”不起作用。有谁知道为什么?

【问题讨论】:

阅读MSDN 上的文档或在线帮助。 Instr 以整数形式返回位置,而不是布尔值。 【参考方案1】:

那是因为

?InStr("1, 2, 3", "2")
 4 

?not 4
-5 // bitwise not of 4

这是一个 真实 值 (cbool(-5) = true),因此您需要:

if InStr("1, 2, 3", "2") = 0 then
  // not found
else 
  // found

【讨论】:

以上是关于Excel VBA instr if 语句为 false的主要内容,如果未能解决你的问题,请参考以下文章

VBA 使用字符串数组作为子字符串参数 InStr 函数 (Excel)

vba 判断一个单元格中是不是包含某个字符串 有则执行后面的语句

VBA Excel不像字符串If语句

VBA if语句

excel VBA用户定义函数中是不是可以有多个if语句

IF & Statement 从 excel 到 VBA