2017-12-14 2 views
1

Ich versuche, ein Makro zu schreiben, das 4 Zelle aktualisiert, wenn der Benutzer "Mailing" aus Zelle A1 wählt. Wenn der Benutzer in A1 "Mailing" auswählt, dann A2, A3, A4 und A5 automatisch auf Wert in B1 aktualisieren. Wenn der Benutzer etwas anderes als "Mailing" auswählt, sollten alle vier Zellen leer sein und der Benutzer sollte in der Lage sein, einen beliebigen Wert einzugeben. Jede Hilfe wird geschätzt. DankExcel-Makro, Zellen automatisch basierend auf Benutzerauswahl zu aktualisieren

ich so weit gekommen, aber VBA ist nicht mein Ding:

Sub test() 
Private Sub Worksheet_Change(ByVal Target As Range) 
If Target.Address = "$A$1" And Target.Value = "Mailing" Then 
     Range("A2:A4").Value = "B1" 
    End If 
End Sub 
+1

Worksheet_change ist ein eigenes Unterelement, das sich im Arbeitsblattcode befindet. Sie können kein Sub in ein anderes Sub einfügen. Entfernen Sie den 'Sub Test()' und stellen Sie sicher, dass der Code auf dem richtigen Codeblatt ist. –

+0

Danke, Scott! Aus irgendeinem Grund, wenn ich versuche, ohne den Untertest() zu laufen, läuft es nicht und es fordert mich auf, ein Makro zu erstellen. Danke – John

+0

Sie führen es aus, indem Sie eine Zelle in diesem Arbeitsblatt ändern. Sie könnten ein Problem haben, wenn Target mehr als 1 Zelle hat - wählen Sie einen Zellenblock aus und drücken Sie Löschen. – PatricK

Antwort

0

wie die anderen erwähnt haben, müssen Sie es nur Sub Worksheet_Change setzen. Beachten Sie, dass Sie, wenn Sie das Wort in Zelle A1 "eingeben", tatsächlich nach der "Enter" in A2 sind.

Private Sub Worksheet_Change(ByVal Target As Range) 
If Range("A1").Value = "Mailing" Then 
     Range("A2:A4").Value = "B1" 
    End If 
End Sub 
0

Das Problem ist, dass Sie versuchen, den Wert einiger Zellen in Ihrem Code zu ändern, damit der Code selbst ausgeführt werden sollte. Sie müssen die Ereignisse deaktivieren, bevor Sie die Zellenwerte ändern und dann wieder aktivieren:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Address = "$A$1" And Target.Value = "Mailing" Then 
     Application.EnableEvents = False 
     Range("A2:A4").Value = "B1" 
     Application.EnableEvents = True 
    End If 
End Sub 
Verwandte Themen