vb基础问题 关于or

wolvesroad 2009-09-08 02:50:05
例如有个判断语句
if a=0 or a=1 or a=2 …… or a=20 then
a=a+1
enif
上面那个条件 怎样简单写
...全文
220 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
unsv29mj 2009-09-10
  • 打赏
  • 举报
回复
a【】= {1,34,543,453,5,4,4,,8,9,90,0,,7,,76,,6,7,76,,76,,5,4,45,34,2,2,,3,3,2,4,23,423,4,32,43,24,3,24,,5,43,5,356,,46,54,6,54,7,67,,8,7,8,69,8,9,879,87,9,78,9,78,98,,78,9,78,9789,789,789,78,9879,87,9,78,9789,879,879,879,879,879,87,9,87,9,874,4,5,6,,7,,7,8,8,9,,9,0,,09,0,9}

=======================
for (i = 0 to unboung())
if (a[i] - a) then
.........
endif
next i
======================================
unsv29mj 2009-09-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 chinaboyzyq 的回复:]
有范围的话:
select case a
  case 1 to 10,23,26,101 to 103
        a=a+1
  case else
        a=a-1
end select

到是个法~~~~~~


[/Quote]

强烈反对这种方法
unsv29mj 2009-09-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wolvesroad 的回复:]
问题就是条件里面 or 太多 如何简化,
if a=1 or a=20 or a=23 or a=26 or a=100 or a=101 or a=103 or a=23 then
…………

怎么样简化
[/Quote]

建议这样写:
dim Flag as Boolean

Flag = (a=1) or (a=20) or (a=23) or (a=26) or (a=100) or (a=101) or (a=103) or (a=23)

If Flag then
..........
endif
东方之珠 2009-09-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wolvesroad 的回复:]
dim a as integer
if a=0 or a=1 or a=2 …… or a=20 then
    a=a+1
enif
上面那个条件  怎样简单写(其中a的值无规律可循)
[/Quote]

无规律可循,那就写在集合里面枚举!
fuqilong 2009-09-10
  • 打赏
  • 举报
回复
来学习!
ilyx21 2009-09-10
  • 打赏
  • 举报
回复
if a >=0 and a <= 20 then a=a+1
无·法 2009-09-10
  • 打赏
  • 举报
回复
你程序设计得显然有问题,如果数据量大的话其实可以考虑将这些要比较的都放到一个文件,或者一个数据库表中,然后查询是否存在,哪有几百个or下去的,vb中一行的字符也是有限的,就是续行多少也是有限的,另外你这个写了一大串谁去看啊,估计最后你自己都懒得看了,要么你程序的一次性的。
gzhjic 2009-09-09
  • 打赏
  • 举报
回复
估计select case就是在这个条件下产生的吧?
hbutwzc 2009-09-09
  • 打赏
  • 举报
回复
select case a
case 1,20,23,26
a = a + 1
end select
贝隆 2009-09-08
  • 打赏
  • 举报
回复
lliai 2009-09-08
  • 打赏
  • 举报
回复
顶9楼
赵4老师 2009-09-08
  • 打赏
  • 举报
回复
顶9楼
wubirong 2009-09-08
  • 打赏
  • 举报
回复
dim i as long
dim a as long
for i = 1 to 20
if a=i then xxx
next
1到20用FOR NEXT吧
king06 2009-09-08
  • 打赏
  • 举报
回复
select case a
case 1,2,3,4,5,6,7,8
case else
a=a+1
end select



chinaboyzyq 2009-09-08
  • 打赏
  • 举报
回复
有范围的话:
select case a
case 1 to 10,23,26,101 to 103
a=a+1
case else
a=a-1
end select

到是个法~~~~~~

zhanghuacheng 2009-09-08
  • 打赏
  • 举报
回复
如果你程序中有很多类似的判断,可以写个判断函数啊,比如:

Private Sub Command1_Click()
Dim A As Integer
A = 50

If isExist(A, "5,8,9,10,50") Then
MsgBox "Yes"
Else
MsgBox "Not"
End If
End Sub

Function isExist(num As Integer, S As String) As Boolean
Dim Ary, N
Ary = Split(S, ",")
For Each N In Ary
If num = Val(N) Then
isExist = True
Exit Function
End If
Next
isExist = False
End Function
chinaboyzyq 2009-09-08
  • 打赏
  • 举报
回复
总得有个范围,没范围的东西肯定是无解的

要不你可以:
if a<>?? and a<>?? and a<>?? then
........

哈哈!!
hanvan 2009-09-08
  • 打赏
  • 举报
回复
select case a
case 1,20,23,26
a = a + 1
end select
wolvesroad 2009-09-08
  • 打赏
  • 举报
回复
问题就是条件里面 or 太多 如何简化,
if a=1 or a=20 or a=23 or a=26 or a=100 or a=101 or a=103 or a=23 then
…………

怎么样简化
无·法 2009-09-08
  • 打赏
  • 举报
回复
貌似没有办法,你最好摆出原始问题
加载更多回复(3)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧