Excel VBA offset sans activer la cellule

J'essaie de changer la couleur d'une cellule. J'ai un code qui arrête une cellule avec un fond noir activé. Cela fonctionne bien mais je souhaite changer l'arrière-plan de certaines de ces cellules en rouge sur un événement de clic de button.

Lorsque le button est cliqué, je veux que toutes les cellules autour de lui deviennent rouges. En raison de ne pouvoir pas sélectionner les cellules, je ne peux pas le faire. Si j'utilise quelque chose comme Range ("A1"). Valeur = "Hi" (c'est une cellule avec un arrière-plan noir), Hi apparaît là-bas, je pense que c'est parce que je n'ai pas activé la cellule vient de changer sa valeur.

Existe-t-il un moyen de décaler à partir de la cellule active et de changer la couleur des cellules autour de celle-ci sans activer / sélectionner ces cellules?

Le code dans la feuille de travail_SelectionChange est:

'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 

Mon code dans le clic de button est:

 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 

    Vous ne devez pas sélectionner une cellule pour changer ses propriétés, en fait, cela est considéré comme une mauvaise pratique, et il y a beaucoup de conséquences imprévues.

    Au lieu de cela, vous pourriez faire quelque chose comme ça:

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

    Et restz dans la cellule dans laquelle vous vous trouviez.