我一直在寻找一个通用的代码和修改,但我无法解决我的问题。VBA循环找到特定范围内的颜色重复
我有一个包含许多行的工作文件。每行应该只有一个颜色填充(RGB 0,204,0)
。我想知道是否可以自动循环(不使用动作按钮)到我的文档中,并通过MsgBox突出显示行,我在其中使用相同的颜色。
谢谢!
我一直在寻找一个通用的代码和修改,但我无法解决我的问题。VBA循环找到特定范围内的颜色重复
我有一个包含许多行的工作文件。每行应该只有一个颜色填充(RGB 0,204,0)
。我想知道是否可以自动循环(不使用动作按钮)到我的文档中,并通过MsgBox突出显示行,我在其中使用相同的颜色。
谢谢!
我录一个宏来看看什么是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
使用颜色值的正确方法是使用'MyRange.Interior.Color = RGB(0,204,0 )'。您可以将RGB值分配给变量,方法是将它们定义为“长”并使用相同的方法。 – UGP
非常感谢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
非常感谢您@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)中着色。
你的代码应该在'Worksheet_Change()事件上运行吗? –
要回答你的问题,是的,这是可能的。 – L42
即使这是不可能的,@ L42告诉虽然困难需要时间,但不可能只需要更长的时间:)欢呼队友 – Mertinc