Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Combobox: Rückgabe in gleiche Zeile

Betrifft: Combobox: Rückgabe in gleiche Zeile von: Jörg
Geschrieben am: 17.01.2020 21:18:06

Hallo Fachleute,
in einer Userform hab ich u.a. zwei Comboboxen.
In der Box5 - Liste Tabelle3.Spalte "E" wähle ich einen beliebigen schon vorhandenen Eintrag aus.
Dieser steht z.Bsp. in Zeile 2.
Box9 - Liste Tabelle3.Spalte "I" zeigt mir den dazugehörigen Eintrag an.

Diesen möchte ich gegebenenfalls ändern und wieder in die entsprechende Zeile zurückschreiben.

Würde mich sehr freuen, wenn mir jemand helfen könnte.
Vielen Dank.
VG Jörg

Betrifft: AW: Combobox: Rückgabe in gleiche Zeile
von: Werner
Geschrieben am: 17.01.2020 21:26:25

Hallo,

und wie füllst du deine Comboboxen?

Am besten wäre es, wenn du deine Mappe hochladen würdest.

Gruß Werner

Betrifft: AW: Combobox: Rückgabe in gleiche Zeile
von: Jörg
Geschrieben am: 17.01.2020 21:31:20

Hallo Werner,
vielen Dank für Deine Nachfrage. Die Boxen werden wie geschrieben aus Spalte "E" bzw. "I" gefüllt.
also:
Box5 - aus Liste Tabelle3.Spalte "E"
Box9 - aus Liste Tabelle3.Spalte "I"
VG Jörg

Betrifft: AW: Combobox: Rückgabe in gleiche Zeile
von: Werner
Geschrieben am: 17.01.2020 21:37:15

Hallo,

das ist ja mal ne super Aussage.
Und wie? Mit Additem? Mit RowSource?

Und wo ist deine Mappe?

Gruß Werner

Betrifft: AW: Combobox: Rückgabe in gleiche Zeile
von: Jörg
Geschrieben am: 17.01.2020 21:55:10

Hallo Werner,
mit RowSource.
Aber so ganz versteh ich Deine Nachfrage nicht. Mit dem Füllen hab ich keine Probleme.
Meine Frage war dahingehend.
Ich wähle in Box5 einen Eintrag aus.
Dieser steht in Spalte "E" z.Bsp. Zeile 2
Dann soll der neue Eintrag in Box9 in Spalte "I" und ebenfalls in Zeile 2 landen,
nachdem ich auf meinen Button geklickt habe.
VG Jörg

Betrifft: AW: Combobox: Rückgabe in gleiche Zeile
von: Werner
Geschrieben am: 17.01.2020 22:13:29

Hallo,

du darfst mir durchaus glauben, dass es seinen Grund hat, weshalb ich das frage.
Bei RowSorce kommt man über den Listidex des ausgewählten Eintrags an die Zeilennummer.
Ich geh mal davon aus, dass deine Datensätze in der Tabelle in Zeile 2 beginnen.
Tabelle3.Cells(Me.Box5.ListIndex + 2, "I") = Me.Box9
+ 2, weil der Index der Box bei 0 beginnt, deine Daten in der Tabelle aber in Zeile 2.

Gruß Werner

Betrifft: AW: Combobox: Rückgabe in gleiche Zeile
von: Jörg
Geschrieben am: 17.01.2020 23:00:11

Hallo Werner,
bitte entschuldige. Hab halt keine Ahnung.
Also es funktioniert sehr gut.
Eine Frage hätte ich noch bitte.
Wie müßte der Code lauten, wenn ich einen Eintrag in der gleichen Spalte/Zeile ändern will ?
Bei meinem Versuch landet die Änderung in der ersten Zeile der Spalte "E".
Tabelle3.Cells(Me.Box5.ListIndex + 2, "E") = Me.Box5
Vielen Dank.
Jörg

Betrifft: AW: Combobox: Rückgabe in gleiche Zeile
von: Werner
Geschrieben am: 18.01.2020 00:13:24

Hallo,

das geht so nicht.

Warum:
Du tägst einen neuen Eintrag in die Combobox ein. Da dieser in der Combobox nicht vorhanden ist, bekommt die Combobox den Listindex -1. Und -1 + 2 gibt 1. Somit wirst du immer in Zeile 1 landen.

Man könnte sich beim Change-Event der Box 5 den gewählten Index in einer globalen Variablen merken und zwar nur dann, wenn der Listindex nicht - 1 ist (also nur dann, wenn ein vorhandener Eintrag aus der Combobox gewählt wurde).
Jetzt änderst du diesen Eintrag in der Combobox. Dabei wird zwar auch das Change-Event der Combobox ausgelöst, der Listindex (jetzt -1) wird aber wegen der If-Abfrage nicht in die globale Variable geschrieben.
Beim Schreiben aus der Combobox ins Blatt greifst du dann auf den Wert der globalen Variablen zu.

Pferdefuß bei der Sache:
Öffnest du deine Userform, dann ist die Box 5 leer, es ist kein Wert ausgewählt. Somit hat die Combobox noch keinen Listindex, die globale Variable = 0. Schreibst du jetzt direkt in die Box was rein und speicherst ab, dann landest du immer beim 1. Wert in der Tabelle, sprich bei dir in Zeile 2 und überschreibst den Wert mit dem Eintrag aus der Combobox, obwohl du ja in der Combobox nichts ausgewählt hast.
Da könnte man dann beispielsweise dafür sorgen, dass beim Starten der Userform im Initialize-Ereignis der Userform den ersten Eintrag in der Combobox anzeigen lässt.
Public loIndex As Long

Private Sub Box5_Change()
If Me.Box5.ListIndex > -1 Then
    loIndex = Me.Box5.ListIndex
End If
End Sub

Private Sub CommandButton1_Click()
Tabelle3.Cells(loIndex + 2, "E") = Me.Box5
End Sub

Private Sub UserForm_Initialize()
Me.Box5.ListIndex = 0
End Sub
Gruß Werner

Betrifft: AW: Combobox: Rückgabe in gleiche Zeile
von: Jörg
Geschrieben am: 18.01.2020 13:00:10

Hallo Werner,
danke Dir. Der Code funktioniert.
Für weitere Fragen würd ich dann doch mal die Datei hochladen.
Wünsche Dir ein schönes WE.
VG Jörg

P.S. Trotz Häkchen im Kontrollkästchen bekomme ich keine Mails mit der Info, dass mir geantwortet wurde.
In der Antworterliste hab meine Email-Adresse ebenfalls hinterlegt.

Betrifft: Gerne u. Danke für die Rückmeldung. o.w.T.
von: Werner
Geschrieben am: 18.01.2020 13:07:37



Beiträge aus dem Excel-Forum zum Thema "Combobox: Rückgabe in gleiche Zeile"