【发布时间】:2019-07-17 01:40:56
【问题描述】:
在 VBA 中,我在一个范围内标记结果并根据单元格值将它们着色为绿色(例如值
每张纸(共四张)对应一个不同的标记,并根据一个值标记为绿色。所有工作表都有相同的 X 和 Y 轴,感兴趣的范围是 (B2:BJ26)。
如果其他工作表中的所有四个相应单元格都涂成绿色,我想制作第五张工作表,将相应单元格涂成绿色。
我可以逐个单元格地做这个。
简化示例
If Sheets(A) "B2" value < 30 AND Sheets(B) "B2" Value > 1.1 AND
Sheets(C) "B2" Value < 1500 AND Sheets(D) "B2" Value > 0.30 THEN
Sheets(E) "B2" interior.color = RGB(0,255,0)
对于 B2:BJ26 范围内的所有单元格,必须有更有效的方法。
前四张纸上颜色/标记值的工作代码示例。
Worksheets("1").Activate
Dim XXXXXXX As Range, cell As Range
Set XXXXXXX = Range("B2:BJ26")
For Each cell In XXXXXXX
If cell.Value < "28" And cell.Value > "1" Then
cell.Interior.Color = RGB(0, 255, 0)
End If
Next
以下建议的代码未在第 5 页上着色
Sub ColorSheetFive()
Dim i As Integer
Dim m As Integer
Dim n As Integer
Dim allGreen As Boolean
For m = 2 To 26
For n = 2 To 62
allGreen = True
For i = 1 To 4
If Sheets(i).Cells(m, n).Interior.Color <> RGB(0, 255, 0) Then
allGreen = False
End If
Next i
If allGreen Then
Sheets(5).Cells(m, n).Interior.Color = RGB(0, 255, 0)
End If
Next n
Next m
MsgBox "Color checking complete!"
End Sub
【问题讨论】:
-
建议的以下代码不为工作表 5 上的任何内容着色 Sub ColorSheetFive() Dim i As Integer Dim m As Integer Dim n As Integer Dim allGreen As Boolean For m = 2 To 26 For n = 2 To 62 allGreen = True For i = 1 To 4 If Sheets(i).Cells(m, n).Interior.Color RGB(0, 255, 0) Then allGreen = False End If Next i If allGreen Then Sheets(5 ).Cells(m, n).Interior.Color = RGB(0, 255, 0) End If Next n Next m
-
请edit your question 而不是在 cmets 中添加信息,因为长代码块本质上是不可读的。为什么不使用条件格式?
-
您的代码
ColorSheetFive可以正常工作吗?!