繁体   English   中英

根据单元格颜色更改Excel中单元格的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM