In questo articolo, creeremo una casella di riepilogo in userform e la caricheremo con i valori dopo aver rimosso i valori duplicati.

I dati grezzi che inseriremo nella casella di riepilogo sono costituiti da nomi. Questi dati grezzi contengono doppiezza nei nomi definiti.

ArrowRawData

In questo esempio, abbiamo creato un modulo utente che consiste in List Box.

Questa casella di riepilogo visualizzerà nomi univoci dai dati di esempio. Per attivare il modulo utente, fare clic sul pulsante Invia.

ArrowDisplayingUserform

Questo modulo utente restituirà il nome selezionato dall’utente come output in una finestra di messaggio.

ArrowDisplayingOutput

Spiegazione logica

Prima di aggiungere nomi nella casella di riepilogo, abbiamo utilizzato l’oggetto raccolta per rimuovere i nomi duplicati.

Abbiamo eseguito i seguenti passaggi per rimuovere le voci duplicate: -. Aggiunti nomi dall’intervallo definito nel foglio Excel all’oggetto raccolta. Nell’oggetto raccolta, non possiamo inserire valori duplicati. Quindi, l’oggetto Collection genera un errore quando rileva valori duplicati. Per gestire gli errori, abbiamo utilizzato l’istruzione di errore “On Error Resume Next”.

  1. Dopo aver preparato la raccolta, aggiungere tutti gli elementi della raccolta all’array.

  2. Quindi, inserisci tutti gli elementi della matrice nella casella di riepilogo.

Segui sotto per il codice

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

Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook e Facebook.

Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]