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

Forumthread: ListBox Werte ändern

ListBox Werte ändern
08.09.2020 22:53:02
xtian
Hallo zusammen,
meine VBA-Kenntnisse sind nicht die besten und ich hoffe auf eure Hilfe. Ob das so überhaupt umsetzbar
ist, kann ich leider nicht sagen.
Meine UserForm besteht aus einer ListBox, einer TextBox und einen CommandButton. Die ListBox zieht
sich die Einträge aus der Spalte A automatisch. Klicke ich nun einen Wert in der ListBox an, wird dieser
in die TextBox übergeben. Das funktioniert soweit auch.
Diesen Wert möchte ich jetzt gerne in der TextBox ändern und den geänderten Wert in der Excel-Tabelle
an der entsprechenden Position wieder einsetzten.
Private Sub CommandButton1_Click()
End Sub

Private Sub userform_initialize()
Dim Zeile As Integer
Dim LetzteZeile As Long
LetzteZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For Zeile = 1 To LetzteZeile
ListBox1.AddItem ThisWorkbook.Worksheets("Tabelle1").Cells(Zeile, 1).Value
Next Zeile
End Sub

Private Sub ListBox1_Click()
With ListBox1
UserForm1.TextBox1 = .List(.ListIndex, 0)
End With
End Sub
Gruß
Christian
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ListBox Werte ändern
08.09.2020 23:12:10
GerdL
Hallo Christian,
ohne Plausibilitäten u. Fehlerbehandlung.
Private Sub UserForm_Initialize()
Dim Zeile As Integer
Dim LetzteZeile As Long
LetzteZeile = ThisWorkbook.Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
For Zeile = 1 To LetzteZeile
ListBox1.AddItem ThisWorkbook.Worksheets("Tabelle1").Cells(Zeile, 1).Value
Next Zeile
End Sub
Private Sub ListBox1_Click()
With ListBox1
UserForm1.TextBox1 = .List(.ListIndex, 0)
UserForm1.TextBox1.Tag = .ListIndex
End With
End Sub
Private Sub CommandButton1_Click()
Tabelle1.Cells(CLng(TextBox1.Tag), 1) = TextBox1
TextBox1.Tag = ""
End Sub

Gruß Gerd
Anzeige
AW: ListBox Werte ändern
08.09.2020 23:49:46
xtian
Hallo Gerd
vielen Dank für die späte Hilfe. Andere Schlafen und wir machen hier VBA:)
Ich habe dein Makro getestet. Zum testen habe ich 3 Texte angelegt. ÄnderungstextAA,
ÄnderungstextBB und ÄnderungstextCC. Wähle ich jetzt in der ListBox den
ÄnderungstextCC aus und ändere diesen in ÄnderungstextCC1, wird in der Excel-Tabelle
der ÄnderungstextBB geändert. Wähle ich in der ListBox den ÄnderungstextBB aus und
ändere diesen in ÄnderungstextBB1, wird in der Excel-Tabelle der ÄnderungstextAA
geändert. Wird ÄnderungstextAA in der ListBox ausgewählt, kommt ein Laufzeitfehler.
Viele Grüße
Christian
Anzeige
AW: ListBox Werte ändern
09.09.2020 07:47:43
GerdL
Guten Morgen,
mein Fehler. Ich habe vergessen, dass der Listbox-Index Null-basiert ist.
Tabelle1.Cells(CLng(TextBox1.Tag) + 1, 1) = TextBox1
TextBox1.Tag = ""
AW: ListBox Werte ändern
09.09.2020 08:24:08
xtian
Guten Morgen Gerd,
wow, das Makro funktioniert jetzt. Vielen lieben Dank und einen schönen Tag noch.
Gruß
Christian
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

ListBox Werte in Excel VBA ändern


Schritt-für-Schritt-Anleitung

Um die Werte in einer ListBox zu ändern und diese Änderungen in einer Excel-Tabelle zu speichern, folge diesen Schritten:

  1. Erstelle eine UserForm:

    • Füge eine ListBox, eine TextBox und einen CommandButton hinzu.
  2. Füge den VBA-Code hinzu:

    • Verwende den folgenden Code für die UserForm:
    Private Sub UserForm_Initialize()
       Dim Zeile As Integer
       Dim LetzteZeile As Long
       LetzteZeile = ThisWorkbook.Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
       For Zeile = 1 To LetzteZeile
           ListBox1.AddItem ThisWorkbook.Worksheets("Tabelle1").Cells(Zeile, 1).Value
       Next Zeile
    End Sub
    
    Private Sub ListBox1_Click()
       With ListBox1
           UserForm1.TextBox1 = .List(.ListIndex, 0)
           UserForm1.TextBox1.Tag = .ListIndex
       End With
    End Sub
    
    Private Sub CommandButton1_Click()
       Tabelle1.Cells(CLng(TextBox1.Tag) + 1, 1) = TextBox1
       TextBox1.Tag = ""
    End Sub
  3. Testen der Funktionalität:

    • Starte die UserForm, wähle einen Eintrag aus der ListBox, ändere den Text in der TextBox und klicke auf den CommandButton. Der geänderte Wert wird in der entsprechenden Zeile der Excel-Tabelle aktualisiert.

Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler beim Ändern eines Wertes

    • Lösung: Stelle sicher, dass du den ListBox-Index korrekt nutzt. Der Index ist nullbasiert. Füge + 1 zu dem Index hinzu, um die richtige Zeile in der Tabelle zu erreichen.
  • Problem: Der falsche Wert wird aktualisiert

    • Lösung: Überprüfe, ob die Tag-Eigenschaft der TextBox korrekt gesetzt wird, bevor du den Wert aktualisierst.

Alternative Methoden

Eine andere Methode, um Werte in einer ListBox zu ändern, ist die Verwendung von Arrays. Du könntest die Werte in einem Array speichern, Änderungen daran vornehmen und dann die ListBox aktualisieren. Hier ein Beispiel:

Dim WerteArray() As Variant
WerteArray = Application.Transpose(ThisWorkbook.Worksheets("Tabelle1").Range("A1:A" & LetzteZeile).Value)

' Ändere Werte im Array
WerteArray(0) = "Neuer Wert"

' Aktualisiere die ListBox
ListBox1.List = WerteArray

Praktische Beispiele

Angenommen, deine Excel-Tabelle enthält folgende Werte in Spalte A:

ÄnderungstextAA
ÄnderungstextBB
ÄnderungstextCC

Wenn du ÄnderungstextCC auswählst, in die TextBox änderst und auf den CommandButton klickst, wird der Wert in der Excel-Tabelle entsprechend aktualisiert. Achte darauf, dass du die korrekten Indizes verwendest, um Fehler zu vermeiden.


Tipps für Profis

  • Fehlerbehandlung einfügen: Implementiere Fehlerbehandlungsroutinen, um das Programm robuster zu machen.

  • Datenüberprüfung: Füge eine Überprüfung hinzu, um sicherzustellen, dass die TextBox nicht leer ist, bevor du den Wert in die Tabelle schreibst.

  • Optimierung der ListBox: Wenn du viele Daten hast, kann das Laden der ListBox aus einer Datenbank oder einer externen Quelle effizienter sein.


FAQ: Häufige Fragen

1. Wie kann ich die ListBox mit Werten aus mehreren Spalten füllen?
Du kannst die Werte in einer Schleife durchlaufen und verschiedene Spalten kombinieren, um sie in der ListBox darzustellen.

2. Was passiert, wenn ich einen Wert lösche?
Du müsstest zusätzlich eine Funktion implementieren, um den Wert aus der ListBox zu entfernen und die Excel-Tabelle entsprechend zu aktualisieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige