ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 13972|回复: 7

[求助] VBA中多条件判断的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-6-3 21:47 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
在编写VBA程序的过程中,我发现涉及到IF条件的多条件判断,不会处理。
比如z在函数中,if( or((a1 and b1),(a1 and b2)),c1,d1),在VBA中应该如何编程来处理这个问题呢?
另外,在excel函数一样,IF条件函数最多可以嵌套7个函数,VBA中存在类似的限制吗?
期待大家能够解答我的这个问题

TA的精华主题

TA的得分主题

发表于 2012-6-3 21:52 | 显示全部楼层
if a1=true and b1=true or a1=true and b2=true  then
      z1=c1
else
     z1=d1
end if

类似这样的。

TA的精华主题

TA的得分主题

发表于 2012-6-3 21:53 | 显示全部楼层
VBA中可以用任意多的IF语句单独或嵌套使用,只要你愿意。没有限制

TA的精华主题

TA的得分主题

发表于 2012-6-3 21:54 | 显示全部楼层
if ([a1] and [b1]) Or ([a1] and [b2]) then
z=[c1]
else
z=[d1]
endif

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-3 22:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
yjh_27 发表于 2012-6-3 21:54
if ([a1] and ) Or ([a1] and ) then
z=[c1]
else

您好,好像不行,增加了[],提示类型不匹配

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-3 22:42 | 显示全部楼层
其实下面这个代码,我还有一个条件需要判断的。条件一:If Sheet1.Range("A1") = "3" And Sheet1.Range("G34") = "申请样书" Then
还有一个条件二 If Sheet1.Range("A1") = "3" And Sheet1.Range("G34") = "申请样书和课件(以及密码)" Then。只要这两个条件任何一个实现,都会执行下面的代码。
Sub 自动保存()
    Dim aa$, bb$
    Dim Lastrow As Long
    Dim Insertrow As Long
    Lastrow = Sheet2.Range("E65536").End(xlUp).Row
    Insertrow = Lastrow + 1
      
    '判断版本以及自动录入样书赠书信息
    If Sheet1.Range("A1") = "3" And Sheet1.Range("G34") = "申请样书" Then    '录入姓名,邮寄地址,邮编等基本信息
    Sheet2.Cells(Insertrow, 1) = Sheet1.Range("c8")
    Sheet2.Cells(Insertrow, 2) = Sheet1.Range("I12") & Sheet1.Range("C13") & Sheet1.Range("E13") & Sheet1.Range("C9") & Sheet1.Range("G9") & Sheet1.Range("C10")
    Sheet2.Cells(Insertrow, 3) = Sheet1.Range("G12")
    '录入办公电话以及手机(合并)
    If Sheet1.Range("G11") <> "" Then
    aa = Sheet1.Range("G11") & "、"
    Else: aa = ""
    End If
    If Sheet1.Range("C11") <> "" Then
    bb = Sheet1.Range("C11") & Sheet1.Range("D11") & "、"
    Else: bb = ""
    End If
    Sheet2.Cells(Insertrow, 4) = Left(aa & bb, Len(aa & bb) - 1)
    Sheet2.Cells(Insertrow, 7) = Sheet1.Range("I36")
    Sheet2.Cells(Insertrow, 8) = "1"
    Sheet2.Cells(Insertrow, 9) = Date
    Sheet2.Cells(Insertrow, 11) = Sheet1.Range("C38")
    Sheet2.Cells(Insertrow, 12) = Sheet1.Range("G10")
    '赠书信息
    Sheet2.Cells(Insertrow, 5) = Sheet1.Range("B34")
    Sheet2.Cells(Insertrow, 6) = Sheet1.Range("C34")
    If Sheet1.Range("G35") = "申请样书" Or Sheet1.Range("G35") = "申请样书和课件(以及密码)" Then
    Sheet2.Cells(Insertrow + 1, 5) = Sheet1.Range("B35")
    Sheet2.Cells(Insertrow + 1, 6) = Sheet1.Range("C35")
    Sheet2.Cells(Insertrow + 1, 7) = Sheet1.Range("I36")
    Sheet2.Cells(Insertrow + 1, 8) = "1"
    Sheet2.Cells(Insertrow + 1, 9) = Date
    Sheet2.Cells(Insertrow + 1, 12) = Sheet1.Range("G10")
    End If
    End If
   
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-3 22:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
chenwendong 发表于 2012-6-3 22:42
其实下面这个代码,我还有一个条件需要判断的。条件一:If Sheet1.Range("A1") = "3" And Sheet1.Range("G3 ...

其实我这段代码的目的很简单,就是在sheet1的表格中填写好数据后,点击按钮“自动保存”,则会把sheet1中的数据自动在sheet2中生成一条记录。

TA的精华主题

TA的得分主题

发表于 2023-4-5 16:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
来个好懂的.zip (557.88 KB, 下载次数: 3)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-29 08:17 , Processed in 0.044931 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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