Naudodami „Microsoft Excel“ VBA užpildykite sąrašo laukelį unikaliomis darbalapio reikšmėmis

Anonim

Šiame straipsnyje mes sukursime sąrašo lauką naudotojo formoje ir įkelsime jį su reikšmėmis pašalinę pasikartojančias reikšmes.

Neapdorotus duomenis, kuriuos įterpsime į sąrašo laukelį, sudaro pavadinimai. Šiuose neapdorotuose duomenyse yra dvigubai apibrėžtų pavadinimų.

Šiame pavyzdyje sukūrėme vartotojo formą, kurią sudaro sąrašo laukelis. Šiame sąrašo laukelyje bus rodomi unikalūs pavyzdžių duomenų pavadinimai. Norėdami suaktyvinti vartotojo formą, spustelėkite mygtuką Pateikti.

Ši vartotojo forma grąžins vartotojo pasirinktą vardą kaip išvestį pranešimų laukelyje.

Loginis paaiškinimas

Prieš įtraukdami vardus į sąrašo lauką, mes panaudojome surinkimo objektą, kad pašalintume pasikartojančius pavadinimus.

Norėdami pašalinti pasikartojančius įrašus, atlikome šiuos veiksmus:-

  1. Pridėti pavadinimai iš apibrėžto diapazono „Excel“ lape prie kolekcijos objekto. Kolekcijos objekte negalime įterpti pasikartojančių verčių. Taigi, kolekcijos objektas meta klaidą, kai susiduria su pasikartojančiomis reikšmėmis. Norėdami ištaisyti klaidas, naudojome klaidos teiginį „Toliau atnaujinti klaidą“.

  2. Paruošę kolekciją, į masyvą įtraukite visus kolekcijos elementus.

  3. Tada į sąrašo laukelį įterpkite visus masyvo elementus.

Sekite toliau pateiktą kodą

 Parinktis „Explicit Sub“ veikia () „UserForm“ var1 Jei i = 0 Į ListBox1.ListCount - 1 Jei ListBox1.Selected (i) Tada var1 = ListBox1.List (i) Exit For End If Next 'Ištraukite vartotojo formą. Unload Me 'Rodoma pasirinkta vertė MsgBox "Sąrašo laukelyje pasirinkote šį pavadinimą:" & var1 End Sub Private Sub UserForm_Initialize () Dim MyUniqueList As Variant, i As Long' Calling UniqueItemList function 'Diapazono priskyrimas kaip įvesties parametras MyUniqueList = „UniqueItemList“ (diapazonas („A12: A100“), tiesa) „Me.ListBox1“ „Sąrašo laukelio turinio išvalymas. Išvalyti“ Vertių pridėjimas sąrašo laukelyje „i = 1“ į „UBound“ („MyUniqueList“). Pasirinkus pirmą elementą. Variantas „Šios funkcijos paskelbimas nepastoviu“ reiškia, kad funkcija bus perskaičiuota, kai bet kuriame langelyje bus atliktas skaičiavimas. Nepastovus dėl klaidos Tęsti toliau „Elementų pridėjimas prie kolekcijos“ Bus įterptas tik unikalus elementas cl In InputRange If cl.Value "" Tada "Pridedant reikšmes kolekcijoje cUnique.Add cl.Value, CStr (cl.Value) End If Next cl" Iniciuojamos vertės grąžinimas naudojant funkciją UniqueItemList = "" If cUnique.Count> 0 Tada „Masyvo dydžio keitimas„ ReDim uList “(1 į cUnique.Count)“ Vertių įterpimas iš kolekcijos į masyvą, kai i = 1 Į cUnique.Count uList (i) = cUnique (i) Kitas i UniqueItemList = uList 'HorizontalList vertės tikrinimas' Jei vertė yra teisinga, perkelkite UniqueItemList If Not HorizontalList, tada UniqueItemList = _ Application.WorksheetFunction.Transpose (UniqueItemList) End If End, jei įvyksta klaida GoTo 0 End Function 

Jei jums patiko šis tinklaraštis, pasidalykite juo su draugais „Facebook“. Be to, mus galite sekti „Twitter“ ir „Facebook“.

Mes norėtume išgirsti jūsų nuomonę, praneškite mums, kaip galime pagerinti savo darbą ir padaryti jį geresnį. Rašykite mums el