当单击此单元格时,您能让 Excel 更改另一个单元格的颜色吗?

当单击此单元格时,您能让 Excel 更改另一个单元格的颜色吗?

我尝试过用 Google 搜索,但没有找到答案……非常沮丧。

我正在尝试在 Excel 中执行此操作:

  1. 选择单元格 B1 - B5(或仅选择 B1)
  2. 选择单元格 A1(黄色)
  3. 单元格 B1 - B5(或者如果仅选择了 B1,则仅选择 B1)也变为黄色。

这是休假(假期)电子表格,不同的休假目的(例如病假、休假、半天等)有不同的颜色。每次有人突出显示电子表格日历上的单元格时,他们只需单击相应的颜色即可为选定的单元格着色。我正在尝试复制这种相同的行为。

这是某人为我们办公室的 excel 表做的,但我无法联系到原始制作者。我正尝试在新的 excel 表中复制此功能。

我该怎么做?宏?VB 脚本?

答案1

您只能通过 VBA 执行此操作。以下是您可以放入 Sheet 对象中的一些代码。

Private lastRange As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = Range("A1").Address Then
        If Not lastRange Is Nothing Then
            lastRange.Interior.Color = Range("A1").Interior.Color
        End If
    Else
       Set lastRange = Target
    End If
End Sub

对象lastRange从一个选择保存到另一个选择。这是让 VBA 记住我们要突出显示的范围的唯一方法。每当您更改选择时,它都会将该选择设置为lastRange 除非在这种情况下,它会将A1先前的选择着色为任何颜色A1


不过,根据您的评论,您的需求比这更广泛一些。由于您需要一系列不同颜色的单元格,因此这可能是您想要的代码:

Private lastRange As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count = 1 Then
        If Not Intersect(Target, Range("A1:A5")) Is Nothing Then
            If Not lastRange Is Nothing Then
                lastRange.Interior.Color = Target.Interior.Color
                Exit Sub
            End If
        End If
    End If
    Set lastRange = Target
End Sub

现在,有一系列单元格A1:A5可以采用不同的颜色。如果您选择该范围内的单个单元格,它会将您之前的选择设置为与当前单元格相同的颜色。您可以A1:A5根据需要调整范围。


我知道这有一个奇怪之处:如果你选择一个范围,然后选择一个形状,然后A1,你之前选择的范围仍然存储为lastRange。这可能没问题,但我不知道你的用例。

答案2

打开 Excel 文件,然后在标签转到条件格式然后点击管理规则。您应该能够看到与问题中提到的单元格相关的规则。

在此处输入图片描述

查看下面的微软链接以获取更多信息:

如何使用条件格式

相关内容