Das Ereignismakro, das Sie suchen, ist Worksheet_Change, nicht das Worksheet_SelectionChange Ereignismakro. Der Worksheet_Change wird immer dann ausgelöst, wenn sich ein Wert im Arbeitsblatt ändert (aber nicht durch eine Formel). Wenn Sie den Sub-Befehl verwenden, um die Werte in Spalte O zu ändern, müssen Sie die Ereignisbehandlung vorübergehend unterbrechen, während Sie den Befehl ausführen Änderungen oder Sie riskieren, dass das Worksheet_Change versucht, auf sich selbst zu laufen.
Wenn eine Änderung auf dem Arbeitsblatt das Worksheet_Change auslöst, müssen Sie bestimmen, ob das Ziel (die Zelle oder die Zellen, die die Änderung erhielten) in dem Bereich der Zellen sind, die Sie betreffen. Dies geschieht mit der Intersect method. Im Folgenden müssen eine oder mehrere der Zellen in Target in Spalte N zwischen den Zeilen 6 und 88 sein. Wenn es eine oder mehrere Zellen gibt, wird eine For Each...Next Statement verwendet, um jede Zelle zu durchlaufen, die die Kriterien erfüllt.
Bei jeder übereinstimmenden Zelle wird der Wert nacheinander überprüft. Die Select Case statement kümmert sich problemlos um mehrere mögliche Ergebnisse.
Setzen Sie alle oben genannten Punkte zusammen und Sie sollten mit Code wie dem folgenden enden.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As Long
If Not Intersect(Target, Columns(14), Range("6:88")) Is Nothing Then
On Error GoTo bm_Safe_Exit
Application.EnableEvents = False
Dim win As Range
For Each win In Intersect(Target, Columns(14), Range("6:88"))
Select Case LCase(win.Value2)
Case "jackpot"
win.Offset(0, 1) = "Winnner" '<~~ ?? spelling...??
Case "high"
' do nothing...?
Case Else
win.Offset(0, 1).ClearContents
End Select
Next win
End If
bm_Safe_Exit:
Application.EnableEvents = True
End Sub
Ich habe die sheet¹ Option Explicit Anweisung am Anfang des Codes hinzugefügt. Dies erfordert, dass Sie Ihre Variablen deklarieren, bevor Sie sie verwenden.
Ich sehe N6: N88 mit Data-Validierung Dropdown-Listen aufgefüllt.
¹ Einstellung Variablendeklaration erforderlich innerhalb der Werkzeuge des VBE ► Optionen ► Editor Eigenschaftenseite der Option Explicit Anweisung an den Anfang jedes neu erstellten Code Blatt gelegt wird. Dieses wird alberne Codierungsfehler wie Rechtschreibfehler vermeiden sowie Sie beeinflussen, den richtigen Variablentyp in der Variablen Deklaration zu verwenden. Variablen, die ohne Deklaration direkt erstellt werden, sind alle vom Typ Variante/Objekt. Verwenden Option Explicit ist weithin als "Best Practice".
Worksheet_SelectionChange bedeutet, dass jedes Mal, wenn Sie überall im Blatt klicken, das Makro ausgeführt wird und alles ersetzt wird. Lassen Sie das Makro den vom Benutzer geänderten Wert nicht ändern, Sie müssen diesen Wert mit etwas identifizieren, zum Beispiel wenn es nicht diese Zelle leer ist und es nicht Etwas, dann bedeutet das, dass jemand es geändert hat – exSnake