Wie bekomme ich den Inhalt, eine Zelle unterhalb, also B16 auf die "UserForm7.ComboBox2" wenn ich aber die Zelle B15 anklicke?
If Target.Address(0, 0) = "B15" then
UserForm7.ComboBox2 = Target(1)
UserForm7.Show
Vielen Dank
Guenter
Um den Inhalt einer Zelle unterhalb der aktuell angeklickten Zelle in eine ComboBox zu übertragen, kannst Du den folgenden VBA-Code verwenden:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address(0, 0) = "B15" Then
UserForm7.ComboBox2 = Target.Offset(1, 0).Value
UserForm7.Show
End If
End Sub
Dieser Code überprüft, ob die Zelle B15 angeklickt wurde und überträgt den Inhalt der Zelle B16 in die ComboBox.
Fehler: UserForm wird nicht angezeigt.
UserForm7.Show aufrufst.Fehler: ComboBox bleibt leer.
Eine alternative Methode besteht darin, die Offset-Funktion in einer anderen Zelle oder in einer anderen UserForm zu verwenden. Der VBA-Code könnte dann so aussehen:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address(0, 0) = "B15" Then
Dim newValue As String
newValue = Target.Offset(1, 0).Value
MsgBox "Der Wert ist: " & newValue
End If
End Sub
Hier wird der Wert aus B16 in einer MessageBox angezeigt, anstatt ihn in die ComboBox zu übertragen.
Angenommen, Du hast in B15 den Wert "Äpfel" und in B16 den Wert "10". Wenn Du auf B15 klickst, wird die ComboBox den Wert "10" anzeigen. Dies ist besonders nützlich, wenn Du Daten dynamisch handhaben möchtest, während Du in Excel arbeitest.
Nutze die Debug.Print-Funktion, um den Wert von Variablen zu testen und zu sehen, ob sie den erwarteten Inhalt haben.
Experimentiere mit verschiedenen Offsets, um mehrere Zellen gleichzeitig zu verarbeiten, z. B. Target.Offset(1, 0) für eine Zelle darunter oder Target.Offset(0, 1) für die Zelle rechts.
Achte darauf, dass Du die richtigen Datentypen verwendest, um Laufzeitfehler zu vermeiden.
1. Was ist der Zweck von Target.Offset in VBA?
Target.Offset wird verwendet, um auf Zellen zuzugreifen, die relativ zu einer bestimmten Zielzelle liegen. Dies ist besonders nützlich, wenn Du mit dynamischen Daten arbeitest.
2. Wie kann ich mehrere Zellen gleichzeitig mit Offset ansprechen?
Du kannst Target.Offset in Kombination mit einer Schleife verwenden, um mehrere Zellen zu durchlaufen. Beispiel:
Dim i As Integer
For i = 0 To 4
Debug.Print Target.Offset(i, 0).Value
Next i
Dieser Code gibt die Werte der nächsten fünf Zellen unterhalb der Zielzelle aus.