【发布时间】:2010-12-22 21:50:04
【问题描述】:
在我的 excel 文件中,我有一个带有公式的表格设置。
包含来自 Range("B2:B12")、Range ("D2:D12") 等的单元格,每隔一行包含这些公式的答案。
对于这些单元格(带有公式答案),我需要应用条件格式,但我有 7 个条件,所以我一直在 VBA 中使用“选择大小写”来根据它们的数量更改它们的内部背景。我目前在工作表代码中设置了选择案例功能,而不是它自己的宏
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iColor As Integer
If Not Intersect(Target, Range("B2:L12")) Is Nothing Then
Select Case Target
Case 0
iColor = 2
Case 0.01 To 0.49
iColor = 36
Case 0.5 To 0.99
iColor = 6
Case 1 To 1.99
iColor = 44
Case 2 To 2.49
iColor = 45
Case 2.5 To 2.99
iColor = 46
Case 3 To 5
iColor = 3
End Select
Target.Interior.ColorIndex = iColor
End If
End Sub
但使用此方法,您必须将值实际输入到单元格中才能使格式生效。
这就是为什么我想写一个子程序来做这个宏。我可以输入我的数据,让公式起作用,当一切准备就绪后,我可以运行宏并格式化这些特定的单元格。
我想要一个简单的方法来做到这一点,显然我可能会浪费大量时间,为每个单元格输入所有案例,但我认为使用循环会更容易。
我将如何编写一个选择案例循环以每隔一行更改特定范围的单元格的格式?
提前谢谢你。
【问题讨论】:
-
您可以使用“添加评论”功能,该功能位于每个答案下方。下面的大文本框可用于答案(解决方案)。评论框可用于讨论解决方案及其cmets。
-
您的 Select Case 中有一个逻辑错误。如果有人设法输入了 3 个十进制值(例如 0.496),则不会选择任何大小写。 (换句话说,它将“失败”。)应该是 case .49 To .99、.99 To 1.99 等。
标签: excel vba select loops case