excel - Excel VBA“如果”、“或”和“和”部分工作
问题描述
我的代码循环遍历单元格并根据包含Or
函数和And
函数的 if 语句填充单元格。
代码部分工作,该Or
部分正在工作,但该And
部分被忽略,并且仅根据该Or
部分填充单元格。
有人可以帮助使And
函数中的代码因素而不仅仅是Or
部分。
下面是有问题的代码。
Sub MarkUp()
Worksheets("TO_Project").Activate
ActiveSheet.Cells(1, 24) = Date
ActiveSheet.Cells(1, 25).Value = DateAdd("d", 30, ActiveSheet.Cells(1, 24))
MarkUpLastRow = ActiveSheet.Range("f100000").End(xlUp).Row
For RowCount = 2 To MarkUpLastRow
If ActiveSheet.Cells(RowCount, 4) = "01 Prospect" Or ActiveSheet.Cells(RowCount, 4) = "02 Capture" Or ActiveSheet.Cells(RowCount, 4) = "03 Proposal" Or ActiveSheet.Cells(RowCount, 4) = "04 Submitted" And ActiveSheet.Cells(RowCount, 16) < ActiveSheet.Cells(1, 24) Then
ActiveSheet.Cells(RowCount, 16).Interior.ColorIndex = 37
End If
Next RowCount
End Sub
解决方案
由于运算符优先级,您的条件被解析为:
If _
(ActiveSheet.Cells(RowCount, 4) = "01 Prospect") _
Or (ActiveSheet.Cells(RowCount, 4) = "02 Capture") _
Or (ActiveSheet.Cells(RowCount, 4) = "03 Proposal") _
Or (ActiveSheet.Cells(RowCount, 4) = "04 Submitted" And ActiveSheet.Cells(RowCount, 16) < ActiveSheet.Cells(1, 24))
显然你的意思是:
If _
(ActiveSheet.Cells(RowCount, 4) = "01 Prospect" _
Or ActiveSheet.Cells(RowCount, 4) = "02 Capture" _
Or ActiveSheet.Cells(RowCount, 4) = "03 Proposal" _
Or ActiveSheet.Cells(RowCount, 4) = "04 Submitted") _
And (ActiveSheet.Cells(RowCount, 16) < ActiveSheet.Cells(1, 24))
推荐阅读
- sql-server - 为什么我的测试环境上的查询执行计划与实时服务器不同?
- powershell - 无法使用 powershell 在 windows server 2016 上启动 windows 服务
- php - 根据数据库中的值制作表格行背景颜色
- c++ - 为什么输出不在控制台输出 C++ 中打印
- jquery - 如何显示来自 JSON 数据的匹配字符串的长度?
- python - 如果发现输入的特殊字符或数字,如何使此代码不加密消息?
- wordpress - 在定制器中添加自定义字体
- laravel - Laravel Composer 在引导记录器上安装错误
- python - 闭包不传递值。蟒蛇 3
- c# - 如何添加自定义模型字段注释以在视图中呈现 ASP.NET、Core 3、MVC