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

Forumthread: Listbox aktualisieren

Listbox aktualisieren
Frank
Schönen Tag
Ich habe in einer Userform eine Listbox in welche ich die Daten der Tabelle1 einlese.
Dann wähle ich einen Eintrag in der Listbox aus und über einen CommandButton wird der Datensatz aus der Tabelle1 gelöscht und in der Tabelle2 wieder eingetragen. Das funktionier auch einwandfrei.
Damit der Datensatz aber in der Listbox verschwindet muss ich die UserForm schließen und wieder öffnen.
Meine Frage kann ich die Listbox aktualisieren ohne die Userform zu schließen und wieder zu öffnen?
Danke Fritz
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Listbox aktualisieren
24.02.2010 11:03:41
Rudi
Hallo,
in welche ich die Daten der Tabelle1 einlese

Wie? Ich kenne 3 Methoden
kann ich die Listbox aktualisieren 

Sicher.
Gruß
Rudi
AW: Listbox aktualisieren
24.02.2010 11:11:01
Frank
Hallo,
ich lese so ein
Private Sub UserForm_Initialize()
Dim lR%
LZ = Sheets("Ausgabetabelle").Cells(Rows.Count, 1).End(xlUp).Row
ListBox2.ColumnCount = 5
ListBox2.RowSource = "Ausgabetabelle!a1:e" & LZ
Anzeige
AW: Listbox aktualisieren
24.02.2010 11:13:22
Rudi
Hallo,
dann eben nach der Löschaktion:
LZ = Sheets("Ausgabetabelle").Cells(Rows.Count, 1).End(xlUp).Row
ListBox2.Clear
ListBox2.RowSource = "Ausgabetabelle!a1:e" & LZ
Gruß
Rudi
AW: Listbox aktualisieren
24.02.2010 11:06:44
xr8k2
Hallo Fritz,
wie befüllst du die Listbox in deiner Userform?
Mach mal ggf. Listbox.Clear und dann die gleiche Routine zum Befüllen der Listbox wie beim Starten der Userform.
Gruß,
xr8k2
Anzeige
Listbox.RemoveItem
24.02.2010 11:06:50
Renee
Hi Frank,
Schreib nach dem Übertragen:
ListBox1.RemoveItem (ListBox1.ListIndex)

damit wird der gewählte Eintrag aus der Liste entfernt.
GreetZ Renée
AW: Listbox.RemoveItem
24.02.2010 11:16:33
Frank
Hallo Renée danke der Code funktioniert
lg fritz
;
Anzeige
Anzeige

Infobox / Tutorial

Listbox in UserForms aktualisieren ohne Schließen


Schritt-für-Schritt-Anleitung

Um eine Listbox in einer Userform zu aktualisieren, ohne die Userform zu schließen, kannst du folgende Schritte ausführen:

  1. Daten aus der Tabelle lesen: Stelle sicher, dass du die Daten in der Listbox korrekt lädst. Verwende den UserForm_Initialize-Ereignis, um die Listbox beim Start zu füllen.

    Private Sub UserForm_Initialize()
       Dim lR As Long
       lR = Sheets("Ausgabetabelle").Cells(Rows.Count, 1).End(xlUp).Row
       ListBox2.ColumnCount = 5
       ListBox2.RowSource = "Ausgabetabelle!a1:e" & lR
    End Sub
  2. Element löschen: Füge einen Button hinzu, um einen Datensatz zu löschen. Nach dem Löschen musst du die Listbox aktualisieren.

    Private Sub CommandButton1_Click()
       Dim selectedIndex As Long
       selectedIndex = ListBox2.ListIndex
    
       If selectedIndex <> -1 Then
           ' Datensatz löschen
           Sheets("Ausgabetabelle").Rows(selectedIndex + 1).Delete
           ' Listbox aktualisieren
           Call RefreshListbox
       End If
    End Sub
  3. Listbox aktualisieren: Erstelle eine Subroutine, um die Listbox neu zu befüllen.

    Private Sub RefreshListbox()
       Dim lR As Long
       lR = Sheets("Ausgabetabelle").Cells(Rows.Count, 1).End(xlUp).Row
       ListBox2.Clear
       ListBox2.RowSource = "Ausgabetabelle!a1:e" & lR
    End Sub

Häufige Fehler und Lösungen

  • Listbox bleibt leer nach dem Löschen: Stelle sicher, dass du die ListBox.Clear-Methode aufrufst, bevor du die RowSource erneut festlegst.
  • Falscher Index beim Löschen: Achte darauf, dass der Index des zu löschenden Elements korrekt ist. Der Index in VBA beginnt bei 0, während die Zeilen in Excel bei 1 beginnen.

Alternative Methoden

  • Verwendung von RemoveItem: Anstatt die gesamte Listbox neu zu laden, kannst du den gewählten Eintrag direkt mit RemoveItem entfernen:

    ListBox2.RemoveItem (ListBox2.ListIndex)
  • Datenbindung: Wenn du dynamische Daten verwendest, kannst du auch die Listbox direkt an ein Datenbankobjekt binden, um die Daten automatisch zu aktualisieren.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du die Listbox mit Daten aus einer Excel-Tabelle befüllen und nach dem Löschen eines Eintrags aktualisieren kannst.

Private Sub UserForm_Initialize()
    Call RefreshListbox
End Sub

Private Sub CommandButton1_Click()
    ' Löschen des ausgewählten Eintrags
    If ListBox2.ListIndex <> -1 Then
        Sheets("Ausgabetabelle").Rows(ListBox2.ListIndex + 1).Delete
        Call RefreshListbox
    End If
End Sub

Private Sub RefreshListbox()
    Dim lR As Long
    lR = Sheets("Ausgabetabelle").Cells(Rows.Count, 1).End(xlUp).Row
    ListBox2.Clear
    ListBox2.RowSource = "Ausgabetabelle!a1:e" & lR
End Sub

Tipps für Profis

  • Optimierung der Performance: Wenn du mit großen Datenmengen arbeitest, kannst du die Application.ScreenUpdating-Eigenschaft temporär auf False setzen, um die Aktualisierung der Bildschirmdarstellung zu deaktivieren, während du die Listbox aktualisierst.

    Application.ScreenUpdating = False
    ' Code zum Aktualisieren der Listbox
    Application.ScreenUpdating = True
  • Datenvalidierung: Füge eine Validierung hinzu, bevor du einen Eintrag löschst, um sicherzustellen, dass der Benutzer tatsächlich einen Eintrag auswählen möchte.


FAQ: Häufige Fragen

1. Wie kann ich die Listbox automatisch aktualisieren, wenn sich die Daten in der Tabelle ändern?
Du kannst das Worksheet_Change-Ereignis verwenden, um die Listbox zu aktualisieren, wenn Änderungen an der Tabelle vorgenommen werden.

2. Funktioniert dies in allen Excel-Versionen?
Ja, die gezeigten VBA-Methoden sollten in allen modernen Excel-Versionen funktionieren, die VBA unterstützen, einschließlich Excel 2010, 2013, 2016, 2019 und Microsoft 365.

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