【问题标题】:Remove Cell color when cell color is created with a Macro Code使用宏代码创建单元格颜色时删除单元格颜色
【发布时间】:2021-01-12 05:46:24
【问题描述】:

我创建了一个宏以在进行更改时将单元格更改为黄色(顶部宏)。我现在想创建一个代码,这样我就可以创建一个按钮来单击以删除使用顶部宏创建的所有黄色。

我能够找到底部代码,它确实将手动突出显示的单元格从黄色变为白色,但没有单元格从我的顶部宏中变为黄色。

以下是我使用的格式:

在进行更改时创建黄色:

'Highlight cells yellow if change occurs

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Target.Cells.Count > 1 Then Exit Sub
    Target.Interior.ColorIndex = 6
End Sub

移除黄色高亮(仅适用于手动更改 - 不适用于宏)

Sub RemoveYellowFillColor()
Dim cell As Range

'Optimize Code
Application.ScreenUpdating = False

'Ensure Cell Range Is Selected
If TypeName(Selection) <> "Range" Then
MsgBox ("A2:Z1000")
Exit Sub
End If

'Loop Through Each Cell
For Each cell In Selection.Cells
If cell.Interior.Color = vbYellow Then
  cell.Interior.Color = xlNone
End If
Next

End Sub

【问题讨论】:

  • 您的顶级宏应该是Target.Interior.Color = vbYellowInterior.ColorInterior.ColorIndex 不一样。
  • 我认为 BigBen 是对的,我在手机上所以无法测试,但 vbYellow 和 ColorIndex 6 可能是不同的颜色(虽然人眼无法察觉)所以 IF 语句永远不会是的。
  • 好的,所以我这样做了,它确实删除了颜色,但前提是光标位于该单元格中。你知道我需要添加什么来使它选择一系列单元格吗?我以为我在这部分中有该代码'确保选择单元格范围如果 TypeName(Selection) "Range" Then MsgBox ("A2:Z1000") Exit Sub End If

标签: excel vba colors cell


【解决方案1】:

这是我的答案的第 1 版:

如 cmets 中所述,将 Workbook_SheetChange 中的 Target.Interior.ColorIndex = 6 更改为 Target.Interior.ColorIndex = vbYellow

然后按如下方式更新您的宏:

Sub RemoveYellowFillColor()
Dim ws As Worksheet, cell As Range

'Optimize Code
Application.ScreenUpdating = False

'Loop Through Each Cell
For Each ws In Worksheets
For Each cell In ws.UsedRange.Cells
If cell.Interior.Color = vbYellow Then cell.Interior.Color = xlNone
Next cell
Next ws

Application.ScreenUpdating = True
End Sub

运行此宏后,vbYellow 填充将从工作簿中所有工作表的所有单元格中删除。

【讨论】:

  • 非常感谢!你太棒了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-05
  • 1970-01-01
  • 2013-11-14
  • 2012-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多