2016-11-28 4 views
0

Ich möchte einen Bereich von Zellen durchlaufen, der nach dem Buchstaben X sucht. Wenn es einen XI gibt, möchte ich die Zellen in der Spalte schattieren links und rechts von der Zelle mit dem X im Bereich. Ich habe noch nie eine bedingte Formatierung verwendet und habe mir das angesehen, aber ich glaube nicht, dass das funktionieren wird. Ich glaube, ich werde .Offset brauchen, aber ich bin nicht sicher, wie man es benutzt. Unten ist mein Code.Schleife durch den Bereich von Zellen, die nach dem Buchstaben X suchen, schattiere angrenzende Zellen in dieser Zeile

Private Sub Worksheet_Change(ByVal Target As Range) 

Application.EnableEvents = False 

If Not Application.Intersect(Target, Me.Range("D14:K19")) Is Nothing Then 
    For Each Cell In Range("D14:K19") 
     If ActiveCell.Value = "x" Or ActiveCell.Value = "X" Then 
      ActiveCell.Offset(
     End If 
    Next Cell 
End If 

Application.EnableEvents = True 
End Sub 
+0

Bedingte Formatierung könnte funktionieren, zum Beispiel mit der Regelformel '= ODER (C14 =" X ", E14 =" X ")' angewendet auf den Bereich '= $ D $ 14: $ K $ 19' –

+0

Bedingte Formatierung wird definitiv Arbeit. Dies erfordert keine VBA (vorausgesetzt, die Anforderungen sind so einfach wie Sie es erklären). –

Antwort

1

Ich gehe davon aus, dass Sie die Spalte nach rechts/links statt Zeile bedeuten. Die Dinge werden etwas anders sein, wenn Sie die Reihe über/unter gemeint haben.

Um Ihre Frage zu beantworten, ActiveCell.Offset(0, -1) wird Ihnen die Zelle auf der linken Seite des aktiven geben. dh die gleiche Spalte und 1 Zelle auf der linken Seite (oder genauer, -1 auf der rechten Seite ...). Auf die gleiche Weise wird ActiveCell.Offset(0, 1) die Zelle rechts von der aktiven geben.

Sie werden jedoch wollen, dass jede Instanz von ActiveCell mit Cell ersetzt wird, da dies das ist, was Sie durchschleifen.

Verwandte Themen