vba - 在 VBA 中编写逻辑测试时遇到问题
问题描述
我正在为我的工作场所创建一个改进的时间表,尝试实施宏来检查手动输入的数据。
我有一个按预期工作的代码,但是当我更改逻辑测试时,它就停止工作了。
我自己不擅长 VBA 编码,所以我正在寻求一些帮助。
Sub ErrorMsg2()
Dim a As Long, b As Long
Dim Msg As String
For a = 28 To 44 Step 4
For b = 4 To 8
If Application.CountIf(Range("C" & a).Resize(, 6), "(=0.7 or =0.8)") Then
If Cells(a, b) = (0.7 Or 0.8) And Cells(a, (b - 1)) = (0.9 Or 1) Then
If Msg = "" Then Msg = Cells(24, b) Else Msg = Msg & ", " & Cells(24, b)
End If
End If
Next b
MsgBox Range("A" & a) & " Has been scheduled a night shift followed by a day shift on " & Msg & vbNewLine & "Please Rectify." & vbNewLine & _
"Press OK to acknowledge.", vbExclamation + vbOKOnly, "Error"
Msg = ""
Next a
End Sub
例如,如果单元格 D28 = 0.8 和单元格 C28 = 1,则应显示消息框。
但是,当 b = 9 时会出现消息框。
解决方案
“或”子句的工作方式不同,这里是相关的片段:
If Application.CountIf(Range("C" & a).Resize(, 6), 0.7) + Application.CountIf(Range("C" & a).Resize(, 6), 0.8) > 0 Then
If (Cells(a, b) = 0.7 Or Cells(a, b) = 0.8) And (Cells(a, (b - 1)) = 0.9 Or Cells(a, (b - 1)) = 1) Then
If Msg = "" Then
Msg = Cells(24, b)
Else
Msg = Msg & ", " & Cells(24, b)
End If
End If
Next b
推荐阅读
- javascript - 在 Express 中接收 POST 请求后登录
- python - pandas 数据帧拆分和多处理
- google-apps-script - 在同一选项卡中将数据从一列复制到另一列
- mysql - NestJs连接MySql:错误无法连接数据库
- c++ - C++ 为什么引用值会改变以前的值?
- python - 将对象文本转换为时间
- angular - Angular、Nginx、Docker 在页面刷新时导致 404 错误
- php - 在鼠标悬停php短网址上隐藏网址?
- windows - 如何防止很少使用的 TCP 会话被丢弃
- python-3.x - 使用 matplollib 图从 Notepad++ 运行 python 脚本