VBA循环以查找特定范围内的颜色副本



我一直在寻找通用代码并进行修改,但我无法解决我的问题。

我有一个包含许多行的工作文件。每行应该只有一个颜色填充(RGB 0,204,0)。我想知道是否可以自动循环(不使用操作按钮)到我的文档中,并通过 MsgBox 突出显示我具有相同颜色的行。

谢谢!

我录制了一个宏以查看RGB(0,204,0)的代码是什么,我发现它是52224

现在我假设您的工作表名称Sheet1并且您的特定范围的名称MySpecificRange

Option Explicit
Sub ChangeTheColorofSpecificRange()
Dim wb As Workbook
Dim ws As Worksheet
Dim MyRange As Range
Set wb = ThisWorkbook
Set ws = wb.Sheets("Sheet1")
Set MyRange = Range("MySpecificRange")
If MyRange.Interior.Color <> 52224 Then
MsgBox "Your SpecificRange doesn't have your desired background color so I'm going to do it!"
MyRange.Interior.Color = 52224
End If
End Sub

在模块中编写此代码后,可以通过单击 F5 或转到Developer选项卡、Macros部分并Run宏来运行此代码。


只要问题不够清楚,这里有一些其他可能的解决方案:


如果您正在寻找@Romcel Geluz询问Worksheet_Change()事件,请将以下代码复制到您的Worksheet对象页面中。

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wb As Workbook
Dim ws As Worksheet
Dim MyRange As Range
Set wb = ThisWorkbook
Set ws = wb.Sheets("Sheet1")
Set MyRange = Range("MySpecificRange")
If MyRange.Interior.Color <> 52224 Then
MsgBox "Your SpecificRange doesn't have your desired background color so I'm going to do it!"
MyRange.Interior.Color = 52224
End If
End Sub

在此示例中,无论您在工作表中执行/键入/更改什么,如果您的 SpecificRange 不是您想要的颜色,它都会随之更改它。(并用花哨的MsgBox通知您!


或者,如果您希望某些代码在工作簿的开头更改 SpecificRange 的背景颜色,则在打开工作簿时,请将以下代码复制到ThisWorkbook工作表中。

Option Explicit
Private Sub Workbook_Open()
Dim wb As Workbook
Dim ws As Worksheet
Dim MyRange As Range
Set wb = ThisWorkbook
Set ws = wb.Sheets("Sheet1")
Set MyRange = Range("MySpecificRange")
If MyRange.Interior.Color <> 52224 Then
MsgBox "Your SpecificRange doesn't have your desired background color so I'm going to do it!"
MyRange.Interior.Color = 52224
End If
End Sub

非常感谢@Mertinc

我的范围是 (C27:G48)

但是,我想知道是否可以执行以下操作:当循环要找到特定颜色 (0,204,0) 时,它将查看单元格的文本:即优秀 (80) 并将数值复制/粘贴到 col H 中。我的数字从 0 开始;5;20 ;40 ;60 ;80 ;100.

如果循环找到两个颜色为 (0,204,0) 的单元格,则需要对 B 列进行着色 (0,0,255)

当然,如果特定文本中的结果为 0,则需要将 col H 相关着色为 (255,0,0)。

最新更新