【发布时间】:2021-09-07 07:23:59
【问题描述】:
我编写了一个 IF 语句,它应该根据某些代码更新同一行中的某些值。但是,当 if 语句读取我的单元格时,它没有分配正确的逻辑。我尝试将列转换为数字,一般,反之亦然,它仍然不起作用。例如,值 309 应该默认为“CHECK”,但它在第一个 if 语句中被捕获,为什么会发生这种情况? PS-我也试过去掉数字周围的“”,还是不行。
Set rngVis = ws.Range("I2:I" & Lr).SpecialCells(xlCellTypeVisible)
For Each c In rngVis
If c.Offset(0, 0).Value = "302" Or "304" Or "305" Or c.Offset(0, 0).Value = vbNullString Then
c.Offset(0, 19).Value = "IAG-RoR"
c.Offset(0, 25).Value = "BAD"
c.EntireRow.Columns("A:AG").Interior.ColorIndex = 3
ElseIf c.Offset(0, 0).Value = "303" Or "306" Or "307" Or "310" Then
'Do nothing'
Else
c.Offset(0, 19).Value = "CHECK"
c.Offset(0, 25).Value = "CHECK"
c.EntireRow.Columns("A:AG").Interior.ColorIndex = 28
End If
Next c
【问题讨论】:
-
a = b or c不等同于a = b or a = c -
啊啊啊知道了!如果 c.Offset(0, 0).Value = "302" 或 c.Offset(0, 0).Value = "304" 或 c.Offset(0, 0).Value = "305"......等等!
-
@Socramvm
Select Case语句也可能满足您的需求,其中Case a Or b Or c有效。
标签: excel vba for-loop if-statement