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

Listbox eintrag bearbeiten und zurück in gleiche

Forumthread: Listbox eintrag bearbeiten und zurück in gleiche

Listbox eintrag bearbeiten und zurück in gleiche
04.10.2012 10:44:55
SoulOpa
Hallo und einen schönen guten Morgen,
ich habe mal wieder ein großes Problem das ich selber nicht lösen kann, und auf die nette Hilfe der Excel Profis angewiesen bin.
Ich habe eine Userform mit Listbox und mehreren Textboxen die für die Adressverwaltung genutzt werden soll. Jetzt würde ich gerne eine Adresse aus der Listbox in die vorhandene Textboxen zurück schreiben und bearbeiten. Dieses funktioniert so weit.
Die abgeänderte Adresse soll nun aber wieder in die gleiche Zeile überschrieben werden!
und da klemmt es.
Des weiteren habe ich auch eine Suchfunktion integriert die so weit auch Funktioniert. Kann man diese Funktion auch mit einem Button belegen? momentan wird der Such Befehl nur mit einem doppel Klick in der Listbox ausgeführt.
leider Bringen mich meine neu erworbenen Excel VBA Bücher in dieser Hinsicht nicht direkt weiter.
An bei meine Mappe: https://www.herber.de/bbs/user/81980.xlsm
Ich Danke
mfg Andi

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox eintrag bearbeiten und zurück in gleiche
04.10.2012 11:30:09
Rudi
Hallo,
Private Sub CommandButton3_Click()
Dim lRow
With Sheets("Kunden")
lRow = Application.Match(TextBox2 * 1, .Columns(1), 0)
If IsError(lRow) Then
'KdNr nicht vorhanden -> neue Nummer
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lRow, 1) = WorksheetFunction.Max(.Columns(1)) + 1 'neue Nummer
End If
.Cells(lRow, 2) = TextBox3
.Cells(lRow, 3) = ComboBox1
.Cells(lRow, 4) = TextBox4
.Cells(lRow, 5) = TextBox5
.Cells(lRow, 6) = TextBox6
.Cells(lRow, 7) = TextBox7
End With
End Sub

Deine Funktion NextNumber ist fehlerträchtig. Was ist, wenn die Tabelle nicht nach KdNr sortiert ist?
Gruß
Rudi

Anzeige
AW: Listbox eintrag bearbeiten und zurück in gleiche
04.10.2012 13:05:19
SoulOpa
Hallo Rudi,
als erstes mal ein Danke schön für deine Hilfe. Code von Dir Funktioniert.
und zweitens!
Zitat:
Deine Funktion NextNumber ist fehlerträchtig. Was ist, wenn die Tabelle nicht nach KdNr sortiert ist?
darüber habe ich mir ehrlich gesagt gar keine Gedanken gemacht. Aber natürlich hast Du recht! Da werde ich mir jetzt was einfallen lassen müssen.
Danke für Deinen Hinweis.
mfg Andi

Anzeige
NextNumber
04.10.2012 13:11:14
Rudi
Hallo,
NextNumber = WorksheetFunction.Max(Sheets("Kunden").Columns(1)) + 1
Gruß
Rudi
;
Anzeige
Anzeige

Infobox / Tutorial

Listbox-Einträge in Excel bearbeiten und zurück speichern


Schritt-für-Schritt-Anleitung

  1. Userform erstellen: In Excel VBA (Visual Basic for Applications) erstelle eine Userform mit einer Listbox und mehreren Textboxen für die Adressverwaltung.

  2. Einträge in die Listbox laden: Füge beim Initialisieren der Userform Code hinzu, um die Einträge aus dem Arbeitsblatt in die Listbox zu laden. Beispiel:

    Private Sub UserForm_Initialize()
       Dim ws As Worksheet
       Set ws = ThisWorkbook.Sheets("Kunden")
       Dim r As Range
    
       For Each r In ws.Range("A2:A" & ws.Cells(ws.Rows.Count, 1).End(xlUp).Row)
           ListBox1.AddItem r.Value
       Next r
    End Sub
  3. Eintrag bearbeiten: Füge die Logik hinzu, damit beim Doppelklick auf einen Listbox-Eintrag die entsprechenden Daten in die Textboxen übernommen werden:

    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
       Dim lRow As Long
       lRow = Application.Match(ListBox1.Value, Sheets("Kunden").Columns(1), 0)
       If Not IsError(lRow) Then
           TextBox2.Value = Sheets("Kunden").Cells(lRow, 1).Value
           TextBox3.Value = Sheets("Kunden").Cells(lRow, 2).Value
           ' Weitere Textboxen können hier hinzugefügt werden
       End If
    End Sub
  4. Daten speichern: Implementiere den Code, um die Änderungen zurück in die gleiche Zeile zu speichern, wenn der Button geklickt wird:

    Private Sub CommandButton3_Click()
       Dim lRow As Long
       With Sheets("Kunden")
           lRow = Application.Match(TextBox2.Value, .Columns(1), 0)
           If Not IsError(lRow) Then
               .Cells(lRow, 2).Value = TextBox3.Value
               ' Weitere Änderungen können hier hinzugefügt werden
           End If
       End With
    End Sub
  5. Suchfunktion mit Button: Um die Suchfunktion per Button zu aktivieren, füge folgenden Code hinzu:

    Private Sub CommandButtonSearch_Click()
       Dim foundCell As Range
       Set foundCell = Sheets("Kunden").Columns(1).Find(TextBoxSearch.Value, LookIn:=xlValues)
       If Not foundCell Is Nothing Then
           ListBox1.ListIndex = foundCell.Row - 2 ' -2 da Index bei 0 beginnt
       End If
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Der Eintrag wird nicht in der Listbox angezeigt.

    • Lösung: Überprüfe, ob die Userform korrekt initialisiert wurde und ob die Range im richtigen Format (z.B. A2:A) angegeben ist.
  • Fehler: Die Daten werden nicht korrekt gespeichert.

    • Lösung: Stelle sicher, dass die Match-Funktion den richtigen Wert findet und dass die richtigen Zeilen angesprochen werden.

Alternative Methoden

  • Verwendung von ComboBox: Anstelle einer Listbox kannst du auch eine ComboBox verwenden, die sowohl die Auswahl als auch die Möglichkeit zur Eingabe neuer Daten bietet.

  • Datenbankanbindung: Für größere Datenmengen kann die Verwendung einer Datenbank wie Access anstelle von Excel sinnvoll sein, um eine bessere Performance zu erzielen.


Praktische Beispiele

  • Beispiel für die Adressverwaltung: Verwende die oben genannten Schritte, um eine einfache Adressverwaltung zu erstellen, bei der Benutzer Adressen hinzufügen, bearbeiten und löschen können.

  • Beispiel für die Suche: Implementiere eine Suchfunktion, die es ermöglicht, Adressen schnell zu finden und anzuzeigen, was die Benutzerfreundlichkeit erhöht.


Tipps für Profis

  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um Nutzer über potenzielle Probleme zu informieren, z.B. wenn ein gesuchter Eintrag nicht gefunden wird.

  • Optimierung der GUI: Achte darauf, dass die Userform benutzerfreundlich gestaltet ist, mit klaren Beschriftungen und einer intuitiven Navigation.


FAQ: Häufige Fragen

1. Frage
Wie kann ich die Listbox so einstellen, dass sie nur einmalige Einträge anzeigt?
Antwort: Du kannst die Einträge beim Laden in die Listbox mit einer Collection speichern, um Duplikate zu vermeiden.

2. Frage
Kann ich die Userform auch in Excel 2010 verwenden?
Antwort: Ja, die oben genannten VBA-Codes und Methoden sind mit Excel 2010 und neueren Versionen kompatibel.

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