【问题标题】:Excel 2007 vba if statement fill cell colour based on precious cell colourExcel 2007 vba if语句根据珍贵的单元格颜色填充单元格颜色
【发布时间】:2013-04-17 17:50:35
【问题描述】:

请帮助我,我不知道如何在 vba 编码中使用颜色。我会尽量简单地解释一下。

我有从 D3 到 AH564 的单元格,其中没有任何值,而且永远不会。如果我将这些单元格中的任何一个更改为蓝色,它必须将其旁边的 14 个单元格(R1C14)更改为绿色,然后再将 14 个单元格更改为蓝色,然后再更改为绿色。只是三倍。如果我将单元格更改为绿色,请执行相同的操作。

我尝试了在网站上找到的几个代码,并根据我的需要对其进行了修改,但它们都使用了值,我什至不知道从哪里开始使用颜色。

背景颜色如下: 蓝色 (RGB) 0、112、192 绿色 (RGB) 146、208、80

我希望宏将第 14 个单元格更改为另一种颜色 3 次。

感谢大家的帮助。

【问题讨论】:

    标签: excel if-statement excel-2007 background-color vba


    【解决方案1】:

    您可以拥有在单元格更改时触发的 VBA 代码。

    不过,将单元格设置为不同的颜色不会触发更改事件,因此仅更改单元格填充不会触发任何宏。

    您可以在单元格中输入数字或文本,而不是使用填充颜色来格式化单元格。您可以使用条件格式来更改具有值的单元格的颜色。

    在单元格中输入文本或数字触发更改事件,该事件可以轻松更改其他单元格的填充颜色。

    因此,如果单元格包含值(例如 1),则设置条件格式。如果是 1,则将其设置为蓝色并填充蓝色背景。这样,号码将不可见。

    然后使用这个宏(右击Sheet标签,点击“查看代码”,将代码粘贴到代码窗口中)

    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
    

    【讨论】:

    • 触发器必须全部结束。我了解这种变化。仍然会决定我是否会使用按钮或更改。与此同时,我有以下问题。如果我将“1”复制并粘贴到多个单元格,它会给我一个错误。当我删除 1 或 2 这么久时,我添加了另一种颜色和一个空白。感谢您的代码。欣赏它。
    • @Teylyn,它绝对完美,没想到会修复它。至少我每天都在学习。感谢所有的帮助。
    【解决方案2】:

    你必须使用单元格的Interior属性,然后:

    您可以使用 ColorIndex(在 Excel 中使用 56 种“预设”颜色之一):

    ActiveCell.Interior.ColorIndex = 36 
    

    或者你可以使用颜色:

    Range("A1:A6").Interior.Color = RGB(0,112,192)
    

    您可以在 Chip Pearson's excellent article on using colors in Excel VBA

    阅读此内容

    【讨论】:

    • 感谢 Philip 提供的信息,我现在可以开始胡闹了,希望能有所收获。一旦我弄清楚了或更可能其他人已经为我提供了代码,我将用答案将其关闭。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 2013-10-19
    相关资源
    最近更新 更多