我尝试过用 Google 搜索,但没有找到答案……非常沮丧。
我正在尝试在 Excel 中执行此操作:
- 选择单元格 B1 - B5(或仅选择 B1)
- 选择单元格 A1(黄色)
- 单元格 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
。这可能没问题,但我不知道你的用例。