我使用以下VBA代码根据颜色更改单元格的值,但它会更改所有选定的单元格,包括彩色单元格。请帮助我: -
Sub ChangeValueBasedOnCellColor()
Dim rg As Range
Dim xRg As Range
Set xRg = Selection.Cells
Application.DisplayAlerts = False
For Each rg In xRg
With rg
Select Case .Interior.Color
Case Is = 16777215
.Value = "OFF"
End Select
End With
Next
Application.DisplayAlerts = False
End Sub
答案 0 :(得分:2)
您遇到的问题是,没有/未设置/默认 * 背景颜色的单元格和背景颜色明确设置为白色的单元格都具有相同的 .Interior.Color
属性值(16777215
)。
要区分这两者,您需要检查每个单元格的.Interior.ColorIndex
属性。没有背景颜色的单元格.Interior.ColorIndex
等于xlNone
(-4142
),而具有设置的白色背景颜色的单元格的.Interior.ColorIndex
等于2
。< / p>
因此,您的代码需要更改为以下内容才能正确设置&#34; white&#34;的值。彩色单元格到OFF
:
Sub ChangeValueBasedOnCellColor()
Dim rg As Range
Dim xRg As Range
Set xRg = Selection.Cells
Application.DisplayAlerts = False
For Each rg In xRg
With rg
Select Case .Interior.ColorIndex
Case Is = 2
.Value = "OFF"
End Select
End With
Next
Application.DisplayAlerts = False
End Sub
注意:强>
* 如果您的默认背景颜色不是白色,则.Interior.Color
属性值 仍然 为白色。这是因为改变&#34;的唯一方法。默认的单元格颜色是添加彩色背景图像。基础单元格的背景颜色仍未设置。