Excel精英培训网

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

VBA 数据有效性里如何添加条件判断

[复制链接]
发表于 2019-12-4 17:09 | 显示全部楼层 |阅读模式
现在在研究如何在VBA里数据有效性使用if elseif语句,但是xlValidateCustom formula1里是不支持使用if else if 这种语句吗?截图如下

Annotation 2019-12-04 165853.png
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2019-12-4 17:33 | 显示全部楼层
本帖最后由 0126 于 2019-12-4 17:56 编辑

嗯,写错了,你目的是什么,在条件格式里面填写判断语句,还是判断后填对应的数据到条件格式里面
判断后填进去可以用vba函数iif。或者用if也行不过需要if判断赋值给变量,在把变量赋值给条件格式里面
FORMULAL:= IIf(Range("K16") <= Range("K17") And Range("K23") <> 0, Range("K18") = Range("K18"), IIf(Range("K16") > Range("K17") And Range("K23") = 0, Range("K18") = Range("K19"), ""))

填函数进去是要用工作表函数,vba函数不能用
FORMULAL:= "=IF(AND(K16<=K17,K23=0),K18=K18,IF(AND(K16>K17,K23=0),K18=K19,""""))"



回复

使用道具 举报

发表于 2019-12-4 17:50 | 显示全部楼层
上传压缩后的文档,多数时是必要的
回复

使用道具 举报

 楼主| 发表于 2019-12-5 10:05 | 显示全部楼层
0126 发表于 2019-12-4 17:33
嗯,写错了,你目的是什么,在条件格式里面填写判断语句,还是判断后填对应的数据到条件格式里面
判断后填 ...

我的想法是现在有多个数据需要用户填,举例来说A/B/C,要保证填写的数据A/B/C满足A+B=C,或者A-B=C,假如填对了就不提醒,填错了就提醒(可以是弹窗也可以是直接把单元格标红),谢谢
回复

使用道具 举报

 楼主| 发表于 2019-12-5 10:07 | 显示全部楼层
爱疯 发表于 2019-12-4 17:50
上传压缩后的文档,多数时是必要的

谢谢提醒,但是我现在想知道下假如有多个数据需要用户填,举例来说A/B/C,要保证填写的数据A/B/C满足A+B=C,或者A-B=C,假如填对了就不提醒,填错了就提醒(可以是弹窗也可以是直接把单元格标红),要实现的话是该用数据有效性吗?
回复

使用道具 举报

发表于 2019-12-5 11:45 | 显示全部楼层
Timothy21 发表于 2019-12-5 10:05
我的想法是现在有多个数据需要用户填,举例来说A/B/C,要保证填写的数据A/B/C满足A+B=C,或者A-B=C,假如 ...


不改或者不能改a和b的值适用数据有效性,
Sub Macro1()
    With Selection.Validation
        .Delete
        .Add xlValidateCustom, xlValidAlertStop, xlBetween, "=OR(a+b=c,a-b=c,c="""",)"
        .ErrorTitle = "注意"
        .ErrorMessage = "该值不符合数据要求"
    End With
End Sub


a和b的值能改的话建议使用下面二种
用vba语句的话可以这样,不过要加上判断a和b值是否变更和删除的语句
    If (a + b <> c And a - b <> c And c <> "" )Then
       MsgBox "该值不符合数据要求", , "注意"
    End If


用条件格式
Selection.FormatConditions.Add(xlExpression, , "=and(a+b<>c,a-b<>c,c<>"""")").Interior.Color = RGB(221, 1, 3)
回复

使用道具 举报

发表于 2019-12-5 11:49 | 显示全部楼层
Timothy21 发表于 2019-12-5 10:07
谢谢提醒,但是我现在想知道下假如有多个数据需要用户填,举例来说A/B/C,要保证填写的数据A/B/C满足A+B= ...

你这问题与数据有效性有啥联系?数据有效性是用预设的好选项来输入,只能是选项中的其中一只,必然满足条件的选项才能放在数据有效性中。
如果是任意结果的组合,用代码判断比较好,在工作表的chang中写代码。
回复

使用道具 举报

 楼主| 发表于 2019-12-5 14:44 | 显示全部楼层
0126 发表于 2019-12-5 11:45
不改或者不能改a和b的值适用数据有效性,
Sub Macro1()
    With Selection.Validation

那请问下现在我想在附件表中1,2,3月填写A/B/C的值,然后检查在A<B的情况下满足A+B=C,或者在A>B的情况下满足A-B=C,在不满足时提醒数据输入有误,这应该怎么编写呢

模板1.zip

7.09 KB, 下载次数: 6

回复

使用道具 举报

发表于 2019-12-5 15:23 | 显示全部楼层
QQ截图20191205151204.png

A=B,C可以是任意值?

回复

使用道具 举报

发表于 2019-12-5 15:24 | 显示全部楼层
这样做有啥好处?

能用写几个可能输入的值,让人感受下吗?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 16:17 , Processed in 0.531984 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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