Excel VBA偏移而不激活单元格

时间:2015-03-13 16:13:29

标签: excel vba 2d-games

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

单击该按钮时,我希望它周围的所有单元格变为红色。由于无法选择细胞,我无法做到这一点。如果我使用Range(“A1”)之类的东西。值=“Hi”(这是一个黑色背景的单元格),Hi会出现在那里,我想这是因为我没有激活单元格只是改变了它的值。

有没有办法从活动单元格偏移并更改其周围的单元格颜色而不激活/选择这些单元格?

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 

1 个答案:

答案 0 :(得分:0)

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

相反,你可以这样做:

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

让焦点留在你所在的牢房里。