Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: ListBox aktualisieren

ListBox aktualisieren
27.11.2018 12:14:42
Florian
Hallo zusammen,
ich habe ein kleines Problem mit meinem UserForm.
Wenn ich den Zählerstand und das Datum eintrage, soll nach dem speichern ein OK neben den bearbeiteten Einträgen in der ListBox stehen. Das passiert auch, allerdings muss ich die UserForm erst schließen.
Wie kann ich den Code denn ergänzen, damit ich die UserForm nicht schließen muss sondern dass sie sich selber aktualisiert ?
Anbei eine Testdatei.
https://www.herber.de/bbs/user/125682.xlsm
Vielen Dank für eure Hilfe.
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ListBox aktualisieren
27.11.2018 13:14:23
Armin
Hallo Florian,
zunächst muss ich Dir schreiben Deine schreibweise des Codes ist nicht gut und führt zu eiener fast unmöglichen Übersicht. Man braucht ewig um festzustellen was gehöhrt zu wem!!!
Userform Activate oder Initialize niemals beide!! Er führt nur eines aus und wenn Du Pech hast, beides nicht. Ich habe Dir in dem Code einige Bemerkung geschrieben.
Sorry aber das musste sein.
https://www.herber.de/bbs/user/125684.xlsm
Gruß Armin
Anzeige
AW: ListBox aktualisieren
27.11.2018 13:32:39
Florian
Hallo Armin,
vielen lieben Dank, funktioniert perfekt.
Ich passe auch gleich noch die Schreibweise an.
Sorry für den Aufwand.
Gruß Florian
;
Anzeige

Infobox / Tutorial

ListBox in Excel UserForm aktualisieren


Schritt-für-Schritt-Anleitung

Um eine ListBox in einer Excel UserForm zu aktualisieren, ohne die UserForm zu schließen, kannst Du den folgenden VBA-Code verwenden. Dieser Code sorgt dafür, dass die ListBox sofort nach dem Speichern der Daten aktualisiert wird.

  1. Öffne Deine Excel-Datei und gehe in den VBA-Editor (drücke ALT + F11).
  2. Suche die UserForm, in der sich die ListBox befindet.
  3. Füge den folgenden Code in das Modul der UserForm ein:
Private Sub btnSave_Click()
    ' Speichern der Daten in der ListBox
    Dim zählerstand As String
    Dim datum As String

    zählerstand = txtZählerstand.Value
    datum = txtDatum.Value

    ' Eintrag zur ListBox hinzufügen
    ListBox1.AddItem zählerstand
    ListBox1.List(ListBox1.ListCount - 1, 1) = datum
    ListBox1.List(ListBox1.ListCount - 1, 2) = "OK" ' Status hinzufügen

    ' UserForm nach dem Speichern aktualisieren
    Me.Repaint
End Sub
  1. Stelle sicher, dass die Steuerelemente (txtZählerstand, txtDatum und ListBox1) korrekt benannt sind und in Deiner UserForm existieren.
  2. Schließe den VBA-Editor und teste die UserForm.

Häufige Fehler und Lösungen

  • Fehler: Die ListBox wird nicht aktualisiert.

    • Lösung: Stelle sicher, dass Du Me.Repaint nach dem Hinzufügen der Einträge verwendest. Dies zwingt die UserForm zur Aktualisierung.
  • Fehler: Die UserForm friert ein.

    • Lösung: Achte darauf, dass Du keine endlosen Schleifen im Code hast. Verwende DoEvents, wenn nötig, um Excel nicht zu blockieren.

Alternative Methoden

Eine alternative Methode zur Aktualisierung der ListBox besteht darin, die ListBox beim Initialisieren der UserForm neu zu laden. Du kannst dies im UserForm_Initialize-Ereignis tun:

Private Sub UserForm_Initialize()
    ' ListBox initialisieren
    ListBox1.Clear
    ' Hier kannst Du auch Daten aus einer Datenquelle laden
End Sub

Diese Methode ist hilfreich, wenn Du die ListBox mit bestehenden Daten füllen möchtest.


Praktische Beispiele

  • Beispiel 1: Einfache ListBox mit Zählerständen

    • Füge einige Testdaten hinzu, um zu sehen, wie die ListBox funktioniert.
  • Beispiel 2: Verwende Daten aus einem Arbeitsblatt

    • Du kannst Daten aus einem bestimmten Bereich in Excel in die ListBox laden:
Private Sub UserForm_Initialize()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Daten")

    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    Dim i As Long
    For i = 1 To lastRow
        ListBox1.AddItem ws.Cells(i, 1).Value
    Next i
End Sub

Tipps für Profis

  • Verwende benutzerdefinierte Klassen: Erstelle benutzerdefinierte Klassen, um Deine UserForm-Logik besser zu organisieren.
  • Fehlerbehandlung einbauen: Nutze On Error Resume Next und On Error GoTo 0, um Fehler im Code zu handhaben.
  • Optimierung der Performance: Wenn Du mit großen Datenmengen arbeitest, optimiere die ListBox-Updates, um die Benutzererfahrung zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich die ListBox mit Daten aus einem Arbeitsblatt füllen? Du kannst im UserForm_Initialize-Ereignis eine Schleife verwenden, um Daten aus dem gewünschten Bereich einzufügen.

2. Was mache ich, wenn die UserForm nicht reagiert? Überprüfe Deinen Code auf mögliche Endlosschleifen oder blockierende Funktionen. Verwende DoEvents, um die Ausführung zu unterbrechen und Excel zu aktualisieren.

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