Excel精英培训网

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

[已解决]用VBA判断三个条件只要满足其中一个则跳出

[复制链接]
发表于 2016-2-11 14:45 | 显示全部楼层 |阅读模式
本帖最后由 lidayu 于 2016-2-14 18:08 编辑

请老师赐教,例如录入窗体TextBox22对应“资料库表”A列为(姓名),TextBox23:TextBox25对应B:D列为(项目1、项目2、项目3),三个条件只要满足其中的一个就结束过程。
例如:窗体TextBox22(姓名)=张三,TextBox23、TextBox24=“”、TextBox25=百姓超市,“资料库表”A3=张三,B3=百姓超市、C3=华隆超市、D3=苏果超市,只满足1个或2个及3个都结束过程.
新建资料判断是否重复.rar (559.52 KB, 下载次数: 12)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2016-2-11 22:17 | 显示全部楼层
添加附件方便老师调试。继续恭候老师的帮助!
回复

使用道具 举报

发表于 2016-2-14 09:08 | 显示全部楼层
回复

使用道具 举报

发表于 2016-2-14 11:20 | 显示全部楼层
替换原代码9--16句。
For i = 1 To UBound(ARR)
            For j = 2 To 4
                If Len(ARR(i, j)) > 0 Then d(ARR(i, 1) & ARR(i, j)) = i
            Next
        Next
     If d.exists(姓名.Value & 项目1.Value) Then CreateObject("WScript.Shell").Popup "该客户已存在!", 1, "提示": Unload Me: Exit Sub
     If d.exists(姓名.Value & 项目2.Value) Then CreateObject("WScript.Shell").Popup "该客户已存在!", 1, "提示": Unload Me: Exit Sub
     If d.exists(姓名.Value & 项目3.Value) Then CreateObject("WScript.Shell").Popup "该客户已存在!", 1, "提示": Unload Me: Exit Sub
   

评分

参与人数 1 +3 收起 理由
lidayu + 3 很给力

查看全部评分

回复

使用道具 举报

发表于 2016-2-14 11:46 | 显示全部楼层
s%=(变量A=条件A)+(变量B=条件B)+(变量C=条件C)+(变量D=条件D)
如果s=-1则有一个条件成立,如果s=-2则有两个条件成立,如果s=-3则有三个条件成立,如果s=-4则有四个条件成立。
大体就这样,具体代码自己写吧

评分

参与人数 1 +2 收起 理由
lidayu + 2 赞一个

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-2-14 13:44 | 显示全部楼层
grf1973 发表于 2016-2-14 11:20
替换原代码9--16句。
For i = 1 To UBound(ARR)
            For j = 2 To 4

grf1973您好 这求助贴我发现有点茅盾,后来我干脆改变了资料库格式为A列姓名,B列为项目,这样就不会出现了以下茅盾。
QQ截图20160214133643.jpg

回复

使用道具 举报

 楼主| 发表于 2016-2-14 13:45 | 显示全部楼层
上清宫主 发表于 2016-2-14 11:46
s%=(变量A=条件A)+(变量B=条件B)+(变量C=条件C)+(变量D=条件D)
如果s=-1则有一个条件成立,如果s=-2则 ...

上清宫主您好 我是菜鸟一个,这代码是我坛子里老师帮助的,请您赐教!
回复

使用道具 举报

发表于 2016-2-14 13:48 | 显示全部楼层
循环里面这样写
For i = 1 To UBound(ARR)
            For j = 2 To 4
               d(ARR(i, 1) & ARR(i, j)) = i
               d(ARR(i, 1)) = i
            Next
        Next

评分

参与人数 1 +3 收起 理由
lidayu + 3 赞一个

查看全部评分

回复

使用道具 举报

发表于 2016-2-14 16:02 | 显示全部楼层
细看了下附件,楼主你想复杂了。根本不必须用字典,也不必须那么麻烦地去循环
试试find,填姓名后,用find在资料库的A列找,看看得到不,找到了则重复,找不到就没重。
填项目后,再用find在资料库中去找,道理同上
有个疑问是:不同的姓名可否有相同的项目?这个问题涉及到填项目后再哪里找的问题。
具体代码应该很好写

思路决定出路

评分

参与人数 1 +3 收起 理由
lidayu + 3 很给力

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-2-14 16:06 | 显示全部楼层
本帖最后由 lidayu 于 2016-2-14 16:14 编辑
上清宫主 发表于 2016-2-14 16:02
细看了下附件,楼主你想复杂了。根本不必须用字典,也不必须那么麻烦地去循环
试试find,填姓名后,用find ...

上清宫主您好 ,您的思路很正确谢谢您的赐教,不同姓名可以重复项目。请您帮我写下代码,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 11:40 , Processed in 0.431095 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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