Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 6331|回复: 6

[已解决]求助,VBA要同时判断多条件是否符合并执行对应的事件

[复制链接]
发表于 2011-12-14 22:08 | 显示全部楼层 |阅读模式
本帖最后由 443233785 于 2011-12-14 22:08 编辑
  1. Private Sub UserForm_Click()
  2. If x1 = 1 And x2 = 1 And x3 = 1 And x4 = 1 Then
  3. Call dataall1
  4. ElseIf x1 = 2 And x2 = 1 And x3 = 1 And x4 = 1 Then
  5. Call dataall2
  6. ElseIf x1 = 3 And x2 = 1 And x3 = 1 And x4 = 1 Then
  7. Call dataall2
  8. ElseIf x1 = 4 And x2 = 1 And x3 = 1 And x4 = 1 Then
  9. Call dataall4
  10. ElseIf x1 = 1 And x2 = 2 And x3 = 1 And x4 = 1 Then
  11. Call dataall5
  12. ElseIf x1 = 1 And x2 = 3 And x3 = 1 And x4 = 1 Then
  13. Call dataall6
  14. ElseIf x1 = 1 And x2 = 4 And x3 = 1 And x4 = 1 Then
  15. Call dataall7
  16. ElseIf x1 = 1 And x2 = 1 And x3 = 1 And x4 = 2 Then
  17. Call dataall8
  18. ElseIf x1 = 1 And x2 = 1 And x3 = 1 And x4 = 3 Then
  19. Call dataall9
  20. End Sub
复制代码

还没结束,X4要到4
然后x1-x4分别要判断它们的结果在1-4不同变化组合时的执行事件
如果增加到x5、x6。。。那这样写代码不会累死?

QQ截图20111214215039.png

求解?在线等答案,附件忘了带出来,这是临时编写的

最佳答案
2011-12-14 22:26
Private Sub UserForm_Click()
Select Case x1 & x2 & x3 & x4
Case Is = "1111"
    Call dataall1
Case Is = "2111"
    Call dataall2
Case Is = "3111"
    Call dataall2
Case Is = "4111"
    Call dataall4
Case Is = "1211"
    Call dataall5
Case Is = "1311"
    Call dataall6
Case Is = "1411"
    Call dataall7
Case Is = "1112"
    Call dataall8
Case Is = "1113"
    Call dataall9
End Select
End Sub
发表于 2011-12-14 22:18 | 显示全部楼层
应该在 Call dataall 过程中优化!

你的每个 子过程 应该有相同处!

或能用一个变量 或 循环 解决。。。

不应该这样 IF AND 大把条件
回复

使用道具 举报

发表于 2011-12-14 22:26 | 显示全部楼层    本楼为最佳答案   
Private Sub UserForm_Click()
Select Case x1 & x2 & x3 & x4
Case Is = "1111"
    Call dataall1
Case Is = "2111"
    Call dataall2
Case Is = "3111"
    Call dataall2
Case Is = "4111"
    Call dataall4
Case Is = "1211"
    Call dataall5
Case Is = "1311"
    Call dataall6
Case Is = "1411"
    Call dataall7
Case Is = "1112"
    Call dataall8
Case Is = "1113"
    Call dataall9
End Select
End Sub
回复

使用道具 举报

 楼主| 发表于 2011-12-14 22:30 | 显示全部楼层
mxg825 发表于 2011-12-14 22:26
Private Sub UserForm_Click()
Select Case x1 & x2 & x3 & x4
Case Is = "1111"

原来这么简单啊,太感谢您了
回复

使用道具 举报

 楼主| 发表于 2011-12-14 22:31 | 显示全部楼层
mxg825 发表于 2011-12-14 22:18
应该在 Call dataall 过程中优化!

你的每个 子过程 应该有相同处!

我明天把附件带上来,我的子程序看了真是会让人吐血啊,太杂了,编了好几个晚上
回复

使用道具 举报

发表于 2011-12-14 22:35 | 显示全部楼层
前几天 已经领教了!

一个字:乱!

其实都给合并成一句。。。。

就是看不懂你的 真正用意。。。

懒得猜了。。。。
回复

使用道具 举报

发表于 2011-12-14 23:41 | 显示全部楼层
很好很强大,学习了,{:101:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-15 07:57 , Processed in 0.269094 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表