In diesem Artikel erstellen wir ein Listenfeld im Benutzerformular und laden es mit Werten, nachdem doppelte Werte entfernt wurden.

Rohdaten, die wir in das Listenfeld einfügen, bestehen aus Namen. Diese Rohdaten enthalten Duplizität in definierten Namen.

ArrowRawData

In diesem Beispiel haben wir ein Benutzerformular erstellt, das aus einem Listenfeld besteht.

In diesem Listenfeld werden eindeutige Namen aus den Beispieldaten angezeigt. Um das Benutzerformular zu aktivieren, klicken Sie auf die Schaltfläche Senden.

ArrowDisplayingUserform

Dieses Benutzerformular gibt den vom Benutzer ausgewählten Namen als Ausgabe in einem Meldungsfeld zurück.

ArrowDisplayingOutput

Logische Erklärung

Vor dem Hinzufügen von Namen im Listenfeld haben wir das Sammlungsobjekt verwendet, um doppelte Namen zu entfernen.

Wir haben die folgenden Schritte ausgeführt, um doppelte Einträge zu entfernen: -. Namen aus dem definierten Bereich in der Excel-Tabelle zum Sammlungsobjekt hinzugefügt. Im Sammlungsobjekt können keine doppelten Werte eingefügt werden. Das Collection-Objekt gibt also einen Fehler aus, wenn doppelte Werte gefunden werden. Um Fehler zu behandeln, haben wir die Fehleranweisung „On Error Resume Next“ verwendet.

  1. Fügen Sie nach dem Vorbereiten der Sammlung alle Elemente aus der Sammlung zum Array hinzu.

  2. Fügen Sie dann alle Array-Elemente in das Listenfeld ein.

Bitte folgen Sie unten für den Code

Option Explicit

Sub running()

UserForm1.Show

End Sub

'Add below code in userform

Option Explicit

Private Sub CommandButton1_Click()



Dim var1 As String

Dim i As Integer

'Looping through all the values present in the list box

'Assigning the selected value to variable var1

For i = 0 To ListBox1.ListCount - 1

If ListBox1.Selected(i) Then

var1 = ListBox1.List(i)

Exit For

End If

Next

'Unload the userform.

Unload Me

'Displaying the selected value

MsgBox "You have selected following name in the List Box : " & var1

End Sub

Private Sub UserForm_Initialize()

Dim MyUniqueList As Variant, i As Long

'Calling UniqueItemList function

'Assigning the range as input parameter

MyUniqueList = UniqueItemList(Range("A12:A100"), True)



With Me.ListBox1

'Clearing the List Box content

.Clear



'Adding values in the List Box

For i = 1 To UBound(MyUniqueList)

.AddItem MyUniqueList(i)

Next i



'Selecting the first item

.ListIndex = 0



End With

End Sub

Private Function UniqueItemList(InputRange As Range, _

HorizontalList As Boolean) As Variant

Dim cl As Range, cUnique As New Collection, i As Long

'Declaring a dynamic array

Dim uList() As Variant

'Declaring this function as volatile

'Means function will be recalculated whenever calculation occurs in any cell

Application.Volatile

On Error Resume Next

'Adding items to collection

'Only unique item will be inserted

'Inserting duplicate item will through an error

For Each cl In InputRange

If cl.Value <> "" Then

'Adding values in collection

cUnique.Add cl.Value, CStr(cl.Value)

End If

Next cl

'Initializing value return by the function

UniqueItemList = ""

If cUnique.Count > 0 Then

'Resizing the array size

ReDim uList(1 To cUnique.Count)

'Inserting values from collection to array

For i = 1 To cUnique.Count

uList(i) = cUnique(i)

Next i



UniqueItemList = uList



'Checking the value of HorizontalList

'If value is true then transposing value of UniqueItemList

If Not HorizontalList Then

UniqueItemList = _

Application.WorksheetFunction.Transpose(UniqueItemList)

End If

End If

On Error GoTo 0

End Function

Wenn dir dieser Blog gefallen hat, teile ihn mit deinen Freunden auf Facebook und Facebook.

Wir würden gerne von Ihnen hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern und für Sie verbessern können. Schreiben Sie uns unter [email protected]