2015-03-13 59 views
-1

我正在嘗試更改單元格的顏色。我有代碼阻止黑色背景被激活的單元格。這個效果很好,但是我想在按鈕單擊事件中將這些單元格中的某些單元格的背景更改爲紅色。Excel VBA偏移量未激活單元格

當按鈕被點擊時,我想讓它周圍的所有單元變成紅色。由於無法選擇細胞,我無法做到這一點。如果我使用Range(「A1」),Value =「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 

我在按鈕點擊的代碼是:

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 
+0

你不能只是做「ActiveCell.Offset(0,1).interior .colorindex = 3「? – OpiesDad 2015-03-13 16:33:23

+0

[如何避免使用Excel中的VBA宏選擇](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) – RubberDuck 2015-03-13 16:34:27

回答

0

你不必選擇一個單元格來改變它的屬性,實際上是被認爲是糟糕的做法,以及許多人意想不到的後果。

相反,你可以做這樣的事情:

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

而且具有焦點停留在你的細胞

+0

太棒了!謝謝! – Tom36 2015-03-13 16:42:35