[英]Change the value of a cell in Excel based on cell color
我正在使用以下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
您遇到的问题是,没有/未设置/默认*背景色的单元格和具有明确设置为白色的背景色的单元格都具有相同的 .Interior.Color
属性值( 16777215
)。
为了区分两者,您需要检查每个单元格的.Interior.ColorIndex
属性。 没有背景色的单元格具有.Interior.ColorIndex
等于xlNone
( -4142
),而具有白色背景色的单元格具有.Interior.ColorIndex
等于2
。
因此,您的代码需要更改为以下内容,才能将“白色”彩色单元格的值正确设置为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
属性值仍为白色。 这是因为“更改”默认单元格颜色的唯一方法是添加彩色背景图像。 基础单元格的背景颜色保持不变。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.