Excel VBA 不激活单元格的偏移量

Excel VBA offset without activating the cell

我正在尝试更改单元格的颜色。我有代码可以停止激活黑色背景的单元格。这很好用,但是我想在按钮单击事件中将其中一些单元格的背景更改为红色。

单击按钮时,我希望它周围的所有单元格都变成红色。由于无法 select 单元格,我无法执行此操作。如果我使用类似 Range("A1").Value = "Hi" 的东西(这是一个黑色背景的单元格),Hi 会出现在那里,我认为这是因为我还没有激活单元格更改了它的值。

有没有办法在没有 activating/selecting 那些单元格的情况下从活动单元格偏移并更改其周围单元格的颜色?

Worksheet_SelectionChange 中的代码是:

'Stops users selecting a Black cell. If they try they are returned to     their previous cell

If Target.Cells(1, 1).Interior.ColorIndex = 1 Then 
   OldRange.Select  
    'MsgBox "H" 
Else 
    Set OldRange = Target 
End If 

我在 Button Click 中的代码是:

If Range("AL7").Value = "Bomb" Then 
 MsgBox "BOOM, BANG, KABOOM!!" 
ActiveCell.Interior.ColorIndex = 3 

ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Select 
ActiveCell.Interior.ColorIndex = 3 

ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate 
ActiveCell.Interior.ColorIndex = 3 

ActiveCell.Offset(rowOffset:=0, columnOffset:=-1).Activate 
ActiveCell.Interior.ColorIndex = 3 

ActiveCell.Offset(rowOffset:=0, columnOffset:=-1).Activate 
ActiveCell.Interior.ColorIndex = 3 

您不必 select 一个单元格来更改它的属性,实际上这被认为是不好的做法,并且充满了许多意想不到的后果。

相反,您可以这样做:

ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Interior.ColorIndex = 3

并专注于您所在的牢房。