Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: ComboBox List Index

ComboBox List Index
26.07.2005 14:22:41
Andreas.R
Hallo Excelfreunde
Ich wurde schon mehrmals hier geholfen und brauche nochmals dringend Eure Hilfe.
Über eine ComboBox (Kundennumer) und deren Auswahl fülle ich Textfelder und ein Listenfeld. in denen ich Änderungen vornehmen kann, und dann entsprechend wieder in die Tabelle eintragen kann.
Wie kann ich aber erreichen, das die ausgewählte Kundennummer in der ComboBox selectiert bleibt, und nicht immer wieder der erste Eintrag in der ComboBox ausgewählt wird.
Hier mal mein Makro:

Private Sub UserForm_Initialize()
'hier werden die Datensätze in die "ComboBox12 eingelesen
Dim z As Integer
Dim letzte As Integer
With UserForm1
.ListBox1.ColumnCount = 6                     'Anzahl der Spalten im Listenfeld festlegen
.ListBox1.ColumnWidths = "90;60;80;80;60;60" 'Spaltenbreite der einzelnen Spalten
End With
ComboBox12.Clear    'suchen SteA-Nr.: (ComboBox Inhalt leeren)
'Das Kombinationsfeld "suchen SteA-Nummer" (ComboBox12) füllen
letzte = Sheets("AGH").Range("E65536").End(xlUp).Row
For z = 3 To letzte
UserForm1.ComboBox12.AddItem Sheets("AGH").Cells(z, 5).Value    'suchen SteA-Nummer
Next z
'Den ersten Eintrag einstellen
UserForm1.ComboBox12.ListIndex = 0
z = UserForm1.ComboBox12.ListIndex
End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ComboBox List Index
26.07.2005 16:23:20
Andreas.R
Hallo Excelfreunde
erst mal entschuldigung, das ich meinen Gruß und ein danke im vorraus vergessen habe
War einfach nur die Eile und keine böse Absicht.
Zu meinem Problem noch ein par Verständlichkeiten.
Ich möchte den Listindex der bei der ComboBox Auswahl vorhanden war, beim erneuten füllen der ComboBox als Auswahl wieder haben (und nicht wie bei mir imer der erste Eintrag)
Also nochmals Danke für alle Helfer im vorraus
Gruß Andreas
Anzeige
AW: ComboBox List Index
26.07.2005 16:48:22
Leo
Hi,
wenn du das userform statt mit Unload Me mit Userform1.Hide ausblendest, bleibt der
Index erhalten. Alternativ kannst du ihn in einer Public-Variablen speichern.
mfg Leo
AW: ComboBox List Index
Andreas.R
Hallo Leo
Hallo Excelfreunde
wie geeht das in einer Public Variablen speichern?
wie muß die Codezeile dafür aussehen?
kann das vielleicht einer von Euch in mein Makro einbauen?
bin für jede Hilfe Dankbar.
Ich bin erst Anfang mit VBA zu erlernen
Nochmals Danke im vorraus
Gruß Andreas
Anzeige
AW: ComboBox List Index
26.07.2005 21:50:18
Matthias
Hallo Andreas,
in ein allgemeines Modul (z.B. Modul1) an den Anfang, außerhalb aller Prozeduren:
Public p_listindex As Integer

und dann ins Modul der UserForm:
Private Sub ComboBox12_Change()
p_listindex = ComboBox12.ListIndex
End Sub

Dann kannst du in deiner UserForm_Initialize()-Prozedur nach der Initialisierung den letzten IndexWert setzen:
ComboBox12.ListIndex = p_listindex

Viel Erfolg,
Matthias
Anzeige
AW: ComboBox List Index
27.07.2005 06:52:27
Andreas.R
Danke Mathias
hat mir sehr geholfen
Danke auch an alle anderen Helfer
In disem Forum kann man einfach eine Menge dazulernen
Echt super
Gruß Andreas
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

ComboBox List Index in Excel VBA


Schritt-für-Schritt-Anleitung

Um den ListIndex einer ComboBox in Excel VBA zu verwalten und sicherzustellen, dass der zuletzt ausgewählte Eintrag beim Laden der UserForm angezeigt wird, gehe wie folgt vor:

  1. Öffne die VBA-Entwicklungsumgebung (Alt + F11).
  2. Füge eine UserForm hinzu und platziere eine ComboBox (z.B. ComboBox12) und ein Listenfeld (ListBox1) darauf.
  3. Erstelle ein allgemeines Modul (z.B. Modul1) und definiere eine öffentliche Variable am Anfang des Moduls:
    Public p_listindex As Integer
  4. Füge den folgenden Code in das Modul der UserForm ein:

    Private Sub UserForm_Initialize()
       ' Fülle die ComboBox
       Dim z As Integer
       Dim letzte As Integer
       ComboBox12.Clear ' ComboBox leeren
       letzte = Sheets("AGH").Range("E65536").End(xlUp).Row
       For z = 3 To letzte
           ComboBox12.AddItem Sheets("AGH").Cells(z, 5).Value ' Werte hinzufügen
       Next z
    
       ' Setze den letzten Index, wenn verfügbar
       If p_listindex >= 0 Then
           ComboBox12.ListIndex = p_listindex
       Else
           ComboBox12.ListIndex = 0 ' Standard auf den ersten Eintrag
       End If
    End Sub
    
    Private Sub ComboBox12_Change()
       ' Speichere den aktuellen ListIndex
       p_listindex = ComboBox12.ListIndex
    End Sub

Häufige Fehler und Lösungen

  • Problem: Der ListIndex wird nach dem Schließen und Öffnen der UserForm auf den ersten Eintrag zurückgesetzt.

    • Lösung: Stelle sicher, dass der ListIndex in einer öffentlichen Variablen gespeichert wird, wie im obigen Code gezeigt.
  • Problem: Die ComboBox zeigt keine Einträge an.

    • Lösung: Überprüfe, ob die Datenquelle in der richtigen Tabelle und im richtigen Bereich definiert ist.

Alternative Methoden

Es gibt mehrere Wege, um den ListIndex einer ComboBox zu verwalten:

  • Verwendung von UserForm1.Hide: Anstelle von Unload Me kannst du UserForm1.Hide verwenden, um die UserForm auszublenden und den Status der ComboBox beizubehalten.
  • Speichern des Index in einer Temp-Variable: Du kannst den ListIndex in einer temporären Variablen speichern und ihn beim Initialisieren der UserForm zurücksetzen.

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du eine ComboBox mit Werten aus einer Tabelle befüllen kannst:

Private Sub UserForm_Initialize()
    Dim letzte As Integer
    Dim i As Integer
    letzte = Sheets("Daten").Range("A" & Rows.Count).End(xlUp).Row

    For i = 1 To letzte
        ComboBox1.AddItem Sheets("Daten").Cells(i, 1).Value
    Next i
End Sub

In diesem Beispiel wird die ComboBox mit Werten aus der ersten Spalte des Arbeitsblatts "Daten" gefüllt.


Tipps für Profis

  • Verwende With-Blöcke: Um den Code klarer und effizienter zu gestalten, nutze With-Strukturen, wenn du mehrere Eigenschaften einer ComboBox oder eines anderen Steuerelements festlegst.

  • Nutze ComboBox.List: Um die gesamte Liste der Elemente einer ComboBox zu erhalten, kannst du ComboBox.List verwenden, um auf die Werte zuzugreifen.

  • Debugging: Nutze Debug.Print für das Debugging, um den aktuellen ListIndex oder andere Variablen zu überprüfen, während dein Code ausgeführt wird.


FAQ: Häufige Fragen

1. Wie kann ich den Index eines bestimmten Wertes in der ComboBox erhalten? Du kannst die Methode FindString verwenden, um den Index eines bestimmten Wertes zu finden:

Dim index As Integer
index = ComboBox12.ListIndex(ComboBox12.FindString("Suchwert"))

2. Was mache ich, wenn die ComboBox leer bleibt? Stelle sicher, dass die Quelle der Daten (z.B. die Tabelle) korrekt ist und dass die Zeilen nicht leer sind. Überprüfe auch, ob der Code beim Initialisieren der UserForm ausgeführt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige