V tem članku bomo ustvarili List Box v uporabniškem obrazcu in ga po odstranitvi podvojenih vrednosti naložili z vrednostmi.
Neobdelani podatki, ki jih bomo vstavili v polje s seznamom, so sestavljeni iz imen. Ti surovi podatki vsebujejo dvojnost v opredeljenih imenih.
V tem primeru smo ustvarili uporabniško obliko, ki jo sestavlja List Box. Na tem seznamu bodo prikazana edinstvena imena iz vzorčnih podatkov. Če želite aktivirati uporabniški obrazec, kliknite gumb za oddajo.
Ta uporabniška oblika bo vrnila ime, ki ga je uporabnik izbral kot izhod v polju za sporočila.
Logična razlaga
Pred dodajanjem imen v polje s seznamom smo za odstranitev podvojenih imen uporabili objekt zbiranja.
Za odstranitev podvojenih vnosov smo izvedli naslednje korake:-
-
Objektu zbirke so dodana imena iz definiranega obsega na Excelovem listu. V predmet zbiranja ne moremo vstaviti podvojenih vrednosti. Torej objekt Collection vrne napako, ko naleti na podvojene vrednosti. Za obravnavo napak smo uporabili izjavo o napaki »On Error Resume Next«.
-
Ko pripravite zbirko, dodajte vse elemente iz zbirke v matriko.
-
Nato v polje za seznam vstavite vse elemente matrike.
Za kodo sledite spodaj
Možnost Explicit Sub running () UserForm1.Show End Sub 'Dodaj spodnjo kodo v obliko uporabnika Možnost Explicit Private Sub CommandButton1_Click () Dim var1 As String Dim i As Integer' Ponavljanje skozi vse vrednosti, ki so prisotne v polju s seznamom 'Dodelitev izbrane vrednosti spremenljivki var1 Za i = 0 Za ListBox1.ListCount - 1 Če je ListBox1.Selected (i) Potem je var1 = ListBox1.List (i) Izhod za konec, če je naslednji 'Razložite uporabniško obliko. Unload Me 'Prikaz izbrane vrednosti MsgBox "V polju s seznamom ste izbrali naslednje ime:" & var1 End Sub Private Sub UserForm_Initialize () Dim MyUniqueList As Variant, i As Long' Calling UniqueItemList function 'Dodelitev obsega kot vhodnega parametra MyUniqueList = UniqueItemList (Razpon ("A12: A100"), True) Z Me.ListBox1 'Brisanje vsebine polja s seznamom. Počisti' Dodajanje vrednosti v polje s seznamom za i = 1 na UBound (MyUniqueList). AddItem MyUniqueList (i) Naprej i ' Izbira prvega elementa .ListIndex = 0 Končaj z End Sub Zasebna funkcija UniqueItemList (InputRange As Range, _ HorizontalList As Boolean) As Variant Dim cl As Range, cUnique As New Collection, i As Long 'Razglasitev dinamičnega niza Dim uList () kot Različica 'Razglasitev te funkcije kot nestanovitne' Pomeni, da se funkcija preračuna vsakič, ko se v kateri koli celici izvede izračun. Volatile On Error Resume Next 'Dodajanje elementov v zbirko' Vstavljen bo samo edinstven element 'Vstavljanje podvojenega elementa bo z napako za vsako cl V InputRange Če je cl.Value "" Potem "Dodajanje vrednosti v zbirko cUnique.Add cl.Value, CStr (cl.Value) End If Next cl 'Inicializacija vrednosti vrne funkcija UniqueItemList =" "Če je cUnique.Count> 0 Potem "Spreminjanje velikosti matrike ReDim uList (1 Za cUnique.Count)" Vstavljanje vrednosti iz zbirke v matriko Za i = 1 V cUnique.Count uList (i) = cUnique (i) Naprej i UniqueItemList = uList "Preverjanje vrednosti HorizontalList" Če je vrednost res, potem prenesite vrednost UniqueItemList Če ni HorizontalList Potem UniqueItemList = _ Application.WorksheetFunction.Transpose (UniqueItemList) Konec Če Konec Če Napaka Pojdi 0 Končaj funkcijo
Če vam je bil ta blog všeč, ga delite s prijatelji na Facebooku. Prav tako nam lahko sledite na Twitterju in Facebooku.
Radi bi slišali od vas, nam sporočite, kako lahko izboljšamo svoje delo in ga izboljšamo za vas. Pišite nam na spletnem mestu e -pošte