Excel VBA Wert aus ComboBox wird nicht übernommen
Hallo, ich komme hier nicht weiter
Hallo,
ich habe eine neue Mustervorlage in Excel erstellt, habe z.T. Textboxen und ComboBoxen eingefügt. Habe über den VB-Editor Code eingegeben:
Hier für ComboBox1:
Private Sub ComboBox1_DropButtonClick()
With ComboBox1
.Clear
.AddItem "Test1"
.AddItem "Test2"
.AddItem "Test3"
.AddItem "Test4"
.ListIndex = 0
End With
End Sub
Nach Neustart von Excel und Auswahl der eigenen Vorlage zum Erstellen eines neuen Arbeitsblattes werden in der ComboBox1 auf Anklicken hin die 4 Möglichkeiten angezeigt, es wird aber immer nur die erste ("Test1") in das Feld der Kombinationsbox übernommen. Ich kann durch Anklicken also nicht eine Möglichkeit ab 2. Position "auswählen" / "übernehmen".
Ich möchte aber, das in den vorhandenen ComboBoxen die jeweils gewählten Einträge auch nach Verlassen der ComboBox in dieser angezeigt werden.
Was mache ich falsch?
Hallo,
ich habe eine neue Mustervorlage in Excel erstellt, habe z.T. Textboxen und ComboBoxen eingefügt. Habe über den VB-Editor Code eingegeben:
Hier für ComboBox1:
Private Sub ComboBox1_DropButtonClick()
With ComboBox1
.Clear
.AddItem "Test1"
.AddItem "Test2"
.AddItem "Test3"
.AddItem "Test4"
.ListIndex = 0
End With
End Sub
Nach Neustart von Excel und Auswahl der eigenen Vorlage zum Erstellen eines neuen Arbeitsblattes werden in der ComboBox1 auf Anklicken hin die 4 Möglichkeiten angezeigt, es wird aber immer nur die erste ("Test1") in das Feld der Kombinationsbox übernommen. Ich kann durch Anklicken also nicht eine Möglichkeit ab 2. Position "auswählen" / "übernehmen".
Ich möchte aber, das in den vorhandenen ComboBoxen die jeweils gewählten Einträge auch nach Verlassen der ComboBox in dieser angezeigt werden.
Was mache ich falsch?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 120271
Url: https://administrator.de/contentid/120271
Ausgedruckt am: 22.11.2024 um 19:11 Uhr
9 Kommentare
Neuester Kommentar
Hallo alexander01!
Das sollte Dir weiterhelfen
ComboBox in Tabellenblatt:
ComboBox in Formular:
Gruß Dieter
Das sollte Dir weiterhelfen
ComboBox in Tabellenblatt:
DieseArbeitsmappe:
Private Sub Workbook_Open()
Call Init_ComboBox1
End Sub
Private Sub Init_ComboBox1()
Dim i As Integer
With Worksheets("Tabelle1").ComboBox1
.Clear
For i = 1 To 4: .AddItem "Test" & i: Next
.ListIndex = 0
End With
End Sub
In Tabelle1:
Private Sub ComboBox1_Change()
Range("A1") = ComboBox1.Text 'Tue etwas mit Auswahl
End Sub
ComboBox in Formular:
Private Sub UserForm_Initialize()
Dim i As Integer
With ComboBox1
.Clear
For i = 1 To 4: .AddItem "Test" & i: Next
.ListIndex = 0
End With
End Sub
Private Sub ComboBox1_Change()
Range("A1") = ComboBox1.Text 'Tue etwas mit Auswahl
End Sub
Gruß Dieter
In Änderung Deines Quelltextes ... Initialisierung beim öffnen der Mappe...
1. Hier ist das Steuerelement in 'Tabelle1'
2. Der aktivierte Listenindex wird aus der Zelle A1 ausgelesen.
Beim Ändern des Listeneintrages wird der aktuelle in 'A1' eingetragen.
Somit steht in 'A1' immer der letzte Eintrag drinne ...
So iO?
Private Sub Workbook_Open()
With Tabelle1.ComboBox1
.Clear
.AddItem "Test1"
.AddItem "Test2"
.AddItem "Test3"
.AddItem "Test4"
.ListIndex = Range("A1").Value
End With
End Sub
2. Der aktivierte Listenindex wird aus der Zelle A1 ausgelesen.
Private Sub ComboBox1_Change()
Range("A1").Value = ComboBox1.ListIndex
End Sub
Beim Ändern des Listeneintrages wird der aktuelle in 'A1' eingetragen.
Somit steht in 'A1' immer der letzte Eintrag drinne ...
So iO?
Hallo alexander01!
Diese Einstellungen werden nicht automatisch gespeichert.
Minion hat ja schon eine Möglichkeit angeboten.
Du könntest auch ein ganz andere Methode verwenden, indem Du ein verstecktes Tabellenblatt z.B. mit dem Namen "Init" erstellst, wo Deine Liste defininiert ist und der ListIndex gesichert wird. Klingt vielleicht kompliziert, ist es aber nicht.
1. Erstelle ein Tabellenblatt mit dem Namen "Init"
2. Schreibe Deine Liste in die Zellen z.B. Zelle A1 = Test1, A2 = Test2 usw.
3. Lasse z.B. die Zelle B1 frei, um hier die Einstellung zu speichern.
4. Wähle im VB-Editor das Tabellenblatt "Init" und stelle im Eigenschaftsfenster Visible = xlVeryHidden ein
5. Füge in Deiner ComboBox im Eigenschaftsfenster unter ListFillRange z.B. Init!A1:A10 ein
Nachdem sich die ComboBox von selbst initialisiert, brauchst Du nur noch den ListIndex beim öffnen der Arbeitsmappe mit dem Wert aus Init!B1 zu initialisieren und bei einer Auswahl in der ComboBox, wird der ListIndex immer automatisch im Tabellenblatt Init!B1 eingetragen.
Das ginge dann in etwa so:
In DieseArbeitsmappe:
Im Tabellenblatt Tabelle1:
Im Tabellenblatt Init:
Gruß Dieter
Diese Einstellungen werden nicht automatisch gespeichert.
Minion hat ja schon eine Möglichkeit angeboten.
Du könntest auch ein ganz andere Methode verwenden, indem Du ein verstecktes Tabellenblatt z.B. mit dem Namen "Init" erstellst, wo Deine Liste defininiert ist und der ListIndex gesichert wird. Klingt vielleicht kompliziert, ist es aber nicht.
1. Erstelle ein Tabellenblatt mit dem Namen "Init"
2. Schreibe Deine Liste in die Zellen z.B. Zelle A1 = Test1, A2 = Test2 usw.
3. Lasse z.B. die Zelle B1 frei, um hier die Einstellung zu speichern.
4. Wähle im VB-Editor das Tabellenblatt "Init" und stelle im Eigenschaftsfenster Visible = xlVeryHidden ein
5. Füge in Deiner ComboBox im Eigenschaftsfenster unter ListFillRange z.B. Init!A1:A10 ein
Nachdem sich die ComboBox von selbst initialisiert, brauchst Du nur noch den ListIndex beim öffnen der Arbeitsmappe mit dem Wert aus Init!B1 zu initialisieren und bei einer Auswahl in der ComboBox, wird der ListIndex immer automatisch im Tabellenblatt Init!B1 eingetragen.
Das ginge dann in etwa so:
In DieseArbeitsmappe:
Private Sub Workbook_Open()
Sheets("Tabelle1").ComboBox1.ListIndex = Sheets("Init").Range("B1")
End Sub
Im Tabellenblatt Tabelle1:
Private Sub ComboBox1_Change()
'Tue was
Sheets("Init").Range("B1") = ComboBox1.ListIndex
End Sub
Im Tabellenblatt Init:
A1 = Test1
A2 = Test2
A3 = Test3
..........
B1 = 0
Gruß Dieter
Hallo alexander01!
Punkt 1:
Dir stehen mit dem versteckten Tabellenblatt mit Ausnahme von ganzes Tabellenblatt Kopieren/Verschieben/Löschen..., sonst alle Funktionen zur Verfügung.
Punkt 2:
Du musst die Zellen als Text formatieren: "2,10", "2,00"
Gruß Dieter
Punkt 1:
Dir stehen mit dem versteckten Tabellenblatt mit Ausnahme von ganzes Tabellenblatt Kopieren/Verschieben/Löschen..., sonst alle Funktionen zur Verfügung.
Punkt 2:
Du musst die Zellen als Text formatieren: "2,10", "2,00"
Gruß Dieter
Hier mal eine Excel-Datei zum anschauen ... --> 1