hisun 发表于 2013-1-31 23:21:46

vb中怎么使用好or?

If 通信次数 < 2 Or 通信状态 = False Then
   goto a1
end if
我本意是想在通信次数大于2次或是通信状态 = True后不执行后面goto语句,但老是用不好or,通信次数>2或是通信状态 = True还是在执行goto a1,非要两个条件都满足后才不执行goto语句,or不是只需要一个条件满足就可以了的吗?

xywap 发表于 2013-1-31 23:26:39

本帖最后由 xywap 于 2013-1-31 23:29 编辑

If 通信次数 > 2 Or 通信状态 = True Then
else
   goto a1
end if



If Not (通信次数 > 2 Or 通信状态 = True) Then
   goto a1
end if

hisun 发表于 2013-1-31 23:30:57

If 通信次数 < 2 Or 通信状态 = False Then

If 通信次数 > 2 Or 通信状态 = True Then
else
   goto a1
end if
在判别上有什么区别吗?应该还是可以写成下面这样啊.
If 通信次数 > 2 Or 通信状态 = True Then

elseIf 通信次数 < 2 Or 通信状态 = False Then
   goto a1
end if

xywap 发表于 2013-1-31 23:44:44

If 通信次数 < 2 Or 通信状态 = False Then

If 通信次数 > 2 Or 通信状态 = True Then
的区别就在于
1是:任一个满足就执行goto a1,同时不满足才不执行goto a1
2是:任一个满足就不执行goto a1,同时不满足才执行goto a1

hisun 发表于 2013-2-1 00:45:27

不知道是不是我这里的问题,还是不对,简化成下面这样没问题吧:
If 通信次数 > 2 Or 通信状态 = True Then
             GoTo A1
这样通信次数远大于2后还是执行了goto语句。

lcw_swust 发表于 2013-2-1 13:21:26

标号a1在哪?
楼主最好是上完整的函数或程序,有可能不是IF语句的问题,而是流程问题

snoopyzz 发表于 2013-2-1 14:02:27

本帖最后由 snoopyzz 于 2013-2-1 14:06 编辑

LS 真的懂if吗?

or是满足一个条件就 "执行" 而不是"不执行"!!

LZ想必初中就没学好数学吧...

你想反过来用的话, 需要的是 and

(A or B)的反逻辑是 (反A and 反B)
(A and B)的反逻辑是 (反A or 反B)

如同 数学的 交集 并集 整体取补后要变符号一样....唉,不知道说啥好...

===============

LZ原话"我本意是想在通信次数大于2次或是通信状态 = True后不执行后面goto语句"

那你需要的是

If 通信次数 >= 2 or 通信状态 = True Then
else
   goto a1
end if

即等效于

If 通信次数 < 2 and 通信状态 = False Then
   goto a1
end if



hisun 发表于 2013-2-2 11:10:49

我原来用的就是这句:
If 通信次数 < 2 Or 通信状态 = False Then
   goto a1
end if
只有通信次数>2和通信状态=true后才不执行下面的goto语句,我需要的是只要通信次数>2或是通信状态=ture就不执行goto,后来干脆不用or了
:(

snoopyzz 发表于 2013-2-2 11:14:58

hisun 发表于 2013-2-2 11:10 static/image/common/back.gif
我原来用的就是这句:
If 通信次数 < 2 Or 通信状态 = False Then
   goto a1


麻烦仔细看下我7L的回复...别看漏了

hisun 发表于 2013-2-2 11:19:27

你等效的不是
If 通信次数 < 2 Or 通信状态 = False Then
   goto a1
end if
说实话我真用不好or,几乎次次出错.

snoopyzz 发表于 2013-2-2 11:52:24

本帖最后由 snoopyzz 于 2013-2-2 11:53 编辑

hisun 发表于 2013-2-2 11:19 static/image/common/back.gif
你等效的不是
If 通信次数 < 2 Or 通信状态 = False Then
   goto a1


你笨到我想吐血....

你需的是 次数>=2 或 状态=true时不执行goto, 那就是下面这两个(任选一个)!!

If 通信次数 >= 2 or 通信状态 = True Then
else 这里有个else看仔细了!!
   goto a1
end if


或者


If 通信次数< 2 and 通信状态 = False Then 这里是and不是or!!
   goto a1
end if

hisun 发表于 2013-2-2 11:58:13

真没注意到,真不好意思,现在到要用到OR的地方都要改成其它方式,怕了.
不怕被人说成笨,就怕没人点,谢谢指点.
页: [1]
查看完整版本: vb中怎么使用好or?