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

时间:2017-05-19 05:08:04

标签: excel vba excel-vba

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

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

谢谢!

2 个答案:

答案 0 :(得分:0)

我录制了一个宏来查看 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宏来运行此代码。

只要问题不够明确,这里有另一种可能的解决方案:

如果您要查找@ {em> 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

答案 1 :(得分:0)

非常感谢@Mertinc

我的范围是(C27:G48)

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

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

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