请帮助我,我不知道如何使用vba编码中的颜色。我会尽力解释这个问题。
我有从D3到AH564的单元格,它们没有任何值,永远不会。如果我将这些单元格中的颜色改为蓝色,则必须将其旁边的14个单元格(R1C14)更改为绿色,然后再将14个单元格更改为蓝色并再次变为绿色。只有三次。如果我将一个单元格更改为绿色,则执行相同的操作。
我已尝试在网站上找到的几个代码并根据我的需要对其进行修改,但所有代码都使用了值,我不知道从哪里开始使用颜色。
背景颜色如下: 蓝色(RGB)0,112,192 绿色(RGB)146,208,80
我希望宏将第14个单元格更改为其他颜色3次。
感谢所有的帮助。
答案 0 :(得分:1)
您必须使用单元格的Interior属性,然后:
您可以使用ColorIndex(在Excel中使用56种“预设”颜色之一):
ActiveCell.Interior.ColorIndex = 36
或者你可以使用Color:
Range("A1:A6").Interior.Color = RGB(0,112,192)
你可以在 Chip Pearson的 excellent article on using colors in Excel VBA
上阅读答案 1 :(得分:1)
您可以拥有在更改单元格时触发的VBA代码。
格式化单元格以使其具有不同的颜色,但不会触发更改事件,因此只更改单元格填充不会启动任何宏。
您可以在单元格中输入数字或文本,而不是使用填充颜色格式化单元格。您可以使用条件格式,它将使用值更改单元格的颜色。
在单元格中输入文本或数字 将 触发更改事件,该事件可以轻松更改其他单元格的填充颜色。
因此,如果单元格包含值,请设置条件格式,例如,1。如果它是1,请将其格式化为蓝色,背景为蓝色。这样,数字将不可见。
然后使用此宏(右键单击“工作表”选项卡,单击“查看代码”并将代码粘贴到代码窗口中)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D3:AH564")) Is Nothing Then
If Target = 1 Then
Target.Offset(0, 14).Interior.Color = RGB(146, 208, 80)
Target.Offset(0, 28).Interior.Color = RGB(0, 112, 192)
Target.Offset(0, 42).Interior.Color = RGB(146, 208, 80)
End If
End If
End Sub
目前尚不清楚触发器单元是否可以在整个范围内或仅在D列中。可以调整宏以适应您定义的任何内容。
编辑:
如果您将值复制并粘贴到多个单元格中,请尝试以下操作:
选项明确
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cel As Range
If Not Intersect(Target, Range("D3:AH564")) Is Nothing Then
If Target.Rows.Count > 0 Then
For Each cel In Target
If cel = 1 Then
cel.Offset(0, 14).Interior.Color = RGB(146, 208, 80)
cel.Offset(0, 28).Interior.Color = RGB(0, 112, 192)
cel.Offset(0, 42).Interior.Color = RGB(146, 208, 80)
End If
Next cel
End If
End If
End Sub