【发布时间】:2017-05-25 00:16:41
【问题描述】:
我正在尝试编写一个条件 case 语句,该语句在 excel 中的特定列中搜索特定字符串,并且当它与更改单元格背景颜色的字符串匹配时。
如果单元格为空或与字符串不匹配,则单元格不会发生任何事情。
现在我正在尝试遍历列中的每个单元格并检查所有可能的字符串值以进行比较,但它似乎不起作用。
这是我当前的代码:
Sub interiorsStatus()
Dim sh As Worksheet
Dim rw As Range
Set sh = ActiveSheet
For Each rw In sh.Rows
Select Case sh.Cells(rw.Row, "E").Value
Case "DELIVERED"
result = Range(rw.Row).Interior.ColorIndex = 33
Case "READY TO ORDER"
result = Range(rw.Row).Interior.ColorIndex = 36
Case "ORDERED"
result = Range(rw.Row).Interior.ColorIndex = 39
Case "DELIVERED"
result = Range(rw.Row).Interior.ColorIndex = 43
Case "EXISTING"
result = Range(rw.Row).Interior.ColorIndex = 40
Case "ON HOLD"
result = Range(rw.Row).Interior.ColorIndex = 48
Case "GENERAL CONTRACTOR"
result = Range(rw.Row).Interior.ColorIndex = 2
Case "AV & BLINDS"
result = Range(rw.Row).Interior.ColorIndex = 15
Case "MILLWORK"
result = Range(rw.Row).Interior.ColorIndex = 22
Case Else
result = """"
End Select
Exit For
Next rw
End Sub
【问题讨论】:
-
rw.Interior.ColorIndex = 22可以,select case rw.cells(1,5) -
为什么不使用条件格式而不是宏?
-
For Each rw In sh.Rows应该是For Each rw In sh.USEDRANGE.Rows否则您将检查 1,048,576 行。查找最后一个非空白行还有其他替代方法。 -
是否声明了
result?还是在任何地方使用?因为现在它似乎只是一个未声明的本地被分配然后被立即丢弃。另外,是的,Exit For就在Next之前 ...将在第一次迭代后强制阻塞循环。
标签: vba excel conditional-formatting