2017-05-19 56 views
0

我一直在寻找一个通用的代码和修改,但我无法解决我的问题。VBA循环找到特定范围内的颜色重复

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

谢谢!

+0

你的代码应该在'Worksheet_Change()事件上运行吗? –

+5

要回答你的问题,是的,这是可能的。 – L42

+0

即使这是不可能的,@ L42告诉虽然困难需要时间,但不可能只需要更长的时间:)欢呼队友 – Mertinc

回答

0

我录一个宏来看看什么是RGB(0,204,0)的代码,我发现,这是。

现在我认为您的工作表名称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宏。


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


如果您正在寻找Worksheet_Change()事件作为@Romcel Geluz问,请复制下面的代码到您的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 
+0

使用颜色值的正确方法是使用'MyRange.Interior.Color = RGB(0,204,0 )'。您可以将RGB值分配给变量,方法是将它们定义为“长”并使用相同的方法。 – UGP

+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)中着色。 – Teeshh

0

非常感谢您@Mertinc

我的范围是(C27:G48)

不过,我想知道如果下面可以做:当环路要找到具体的颜色(0,204,0),它会查看单元格的文本:例如EXCELLENT(80)并将数字值复制/粘贴到列H中。我的编号从0开始; 5; 20; 40; 60; 80; 100.

如果循环找到两个细胞的颜色(0,204,0)B列需要被着色(0,0,255)

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