【发布时间】:2021-01-25 11:30:56
【问题描述】:
我设法得到了这个代码:
Sub ColorChange()
Dim ws As Worksheet
Set ws = Worksheets(2)
clrOrange = 39423
clrWhite = RGB(255, 255, 255)
If ws.Range("D19").Value = "1" And ws.Range("E19").Value = "1" Then
ws.Range("D19", "E19").Interior.Color = clrOrange
ElseIf ws.Range("D19").Value = "0" Or ws.Range("E19").Value = "0" Then
ws.Range("D19", "E19").Interior.Color = clrWhite
End If
End Sub
这可行,但现在我需要此代码在 50 行和 314 个单元格中工作,但每次只在两个单元格上工作,例如 D19+E19、D20+E20 等。端点是 DB314+DC314。
有没有办法,无需复制粘贴此代码并手动替换所有行和单元格?
如果两个单元格中的值不是 1+1,则单元格颜色会变回白色。
编辑:感谢@VBasic2008 的解决方案。
我在工作表的代码中添加了以下内容,以使解决方案自动工作:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D19:DC314")) Is Nothing Then
Call ColorChange
End If
End Sub
因为 Interior.Color 移除了边框,所以我添加了以下子项:
Sub vba_borders()
Dim iRange As Range
Dim iCells As Range
Set iRange = Range("D19:DC67,D70:DC86,D89:DC124,D127:DC176,D179:DC212,D215:DC252,D255:DC291,D294:DC314")
For Each iCells In iRange
iCells.BorderAround _
LineStyle:=xlContinuous, _
Weight:=xlThin
Next iCells
End Sub
排除某些行的范围有点不同。
【问题讨论】:
-
您可以通过条件格式来实现这一点。这里不需要 VBA?
-
我试过了,但找不到适合我想要的东西。您认为我应该使用哪一个?
-
Home | Conditional Formatting | Use a Formula -
好的,找到了使用条件格式的解决方案,但现在我需要将它应用于我需要它工作的所有行和单元格。
-
选择整个范围以应用格式。试一试,如果您遇到困难,请发布您尝试过的内容,我们会从那里拿走?