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

Forumthread: doppelte Werte in Listbox vermeiden

doppelte Werte in Listbox vermeiden
18.11.2018 11:03:22
Andre
Hallo zusammen,
habe zwei Listboxen mit je 5 Spalten in einer UserForm.
In der ersten ListBox suche ich Lagerbestände heraus, markiere sie und übergebe sie per CommandButton an die zweie ListBox.
Jetzt möchte ich noch eine Abfrage einbauen, dass vor dem Übergeben die Werte in der zweiten Spalte geprüft werden und wenn der Eintrag schon vorhanden ist, soll eine MsgBox aufgehen mit dem Hinweis "bereits vorhanden"
Könnte mir jemand den Code ergänzen?
Private Sub CommandButton1_Click()
Dim lst_A, lst_B As Control
Dim idx_B As Integer
Dim lng As Long
Set lst_A = UserForm_LAGER.ListBox1
Set lst_B = UserForm_LAGER.ListBox2
idx_B = lst_B.ListCount
For lng = 0 To lst_A.ListCount - 1
If lst_A.Selected(lng) Then
With lst_B
.AddItem
.Column(0, idx_B) = lst_A.List(lng, 0)
.Column(1, idx_B) = lst_A.List(lng, 1)
.Column(2, idx_B) = lst_A.List(lng, 2)
.Column(3, idx_B) = lst_A.List(lng, 3)
.Column(4, idx_B) = lst_A.List(lng, 4)
End With
idx_B = idx_B + 1
End If
Next lng
End Sub

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: doppelte Werte in Listbox vermeiden
18.11.2018 11:06:04
Hajo_Zi
http://hajo-excel.de/vba_userform_listbox.htm

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Doppelte Werte in Listbox vermeiden


Schritt-für-Schritt-Anleitung

Um doppelte Werte in einer Listbox zu vermeiden, kannst du den folgenden VBA-Code verwenden. Dieser Code prüft, ob der Eintrag in der zweiten Listbox bereits vorhanden ist, bevor er den neuen Eintrag hinzufügt.

  1. Öffne deine UserForm in Excel.
  2. Füge einen CommandButton hinzu, falls noch nicht vorhanden.
  3. Kopiere den folgenden Code in das Code-Modul deiner UserForm:
Private Sub CommandButton1_Click()
    Dim lst_A As Control
    Dim lst_B As Control
    Dim idx_B As Integer
    Dim lng As Long
    Dim existingValue As Variant
    Dim isDuplicate As Boolean

    Set lst_A = UserForm_LAGER.ListBox1
    Set lst_B = UserForm_LAGER.ListBox2
    idx_B = lst_B.ListCount

    For lng = 0 To lst_A.ListCount - 1
        If lst_A.Selected(lng) Then
            existingValue = lst_A.List(lng, 1) ' Wert der zweiten Spalte

            ' Überprüfen, ob der Wert bereits in ListBox2 vorhanden ist
            isDuplicate = False
            For i = 0 To idx_B - 1
                If lst_B.List(i, 1) = existingValue Then
                    isDuplicate = True
                    Exit For
                End If
            Next i

            If Not isDuplicate Then
                With lst_B
                    .AddItem
                    .Column(0, idx_B) = lst_A.List(lng, 0)
                    .Column(1, idx_B) = lst_A.List(lng, 1)
                    .Column(2, idx_B) = lst_A.List(lng, 2)
                    .Column(3, idx_B) = lst_A.List(lng, 3)
                    .Column(4, idx_B) = lst_A.List(lng, 4)
                End With
                idx_B = idx_B + 1
            Else
                MsgBox "Bereits vorhanden", vbExclamation
            End If
        End If
    Next lng
End Sub

Häufige Fehler und Lösungen

Fehler: Die MsgBox erscheint nicht, wenn ein doppelter Eintrag hinzugefügt werden soll.
Lösung: Stelle sicher, dass die Überprüfung auf Duplikate korrekt implementiert ist. Der Code oben prüft die zweite Spalte auf Duplikate und zeigt eine MsgBox an.

Fehler: Werte werden nicht in die zweite Listbox übertragen.
Lösung: Überprüfe den Index und stelle sicher, dass die Listboxen korrekt referenziert werden.


Alternative Methoden

Eine alternative Methode, um doppelte Werte zu vermeiden, ist die Verwendung von Excel-Funktionen wie COUNTIF, um die Existenz eines Wertes vor der Übertragung zu prüfen. Du könntest auch eine Dictionary-Objekt verwenden, um Duplikate effizient zu erkennen.


Praktische Beispiele

Wenn du beispielsweise eine UserForm für ein Lagerverwaltungssystem erstellst, könntest du den oben genannten Code verwenden, um sicherzustellen, dass keine Artikel doppelt in der Listbox angezeigt werden. Hier ist ein Beispiel für die Daten, die in der ersten Listbox sein könnten:

Artikelnummer Artikelname Menge Preis Lagerort
001 Schrauben 100 0.10 A1
002 Nägel 200 0.05 B1

Wenn du einen Artikel auswählst und versuchst, ihn erneut hinzuzufügen, zeigt der Code eine MsgBox mit "Bereits vorhanden".


Tipps für Profis

  • Nutze die Möglichkeit, die ListBoxen dynamisch zu gestalten, indem du sie beim Öffnen der UserForm automatisch mit Daten befüllst.
  • Erwäge die Verwendung von ListBox.List statt ListBox.AddItem, um die Performance zu verbessern, wenn du mit großen Datenmengen arbeitest.
  • Setze Filtermöglichkeiten in der UserForm ein, um die Benutzerfreundlichkeit zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um mehr als eine Spalte auf Duplikate zu prüfen?
Du kannst die Bedingung in der Schleife anpassen, indem du mehrere Spaltenwerte kombinierst, bevor du die Duplikatsprüfung durchführst.

2. Funktioniert dieser Code in Excel 2016?
Ja, der Code sollte in Excel 2016 sowie in neueren Versionen funktionieren, solange die UserForm korrekt eingerichtet ist.

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