Populere en brukerform-kombinasjonsboks i Excel med en dynamisk liste

Å befolke en brukerform-kombinasjonsboks med en statisk liste krever litt kunnskap og litt VBA-kode. Å få kombinasjonsboksen til å oppdatere når listen oppdateres, krever litt mer arbeid. Du kan oppdatere listeområdet hver gang du oppdaterer det, eller du kan opprette en dynamisk liste. Med dynamisk liste, mener jeg virkelig et dynamisk område som inneholder en liste over dataelementer.

La oss se på et raskt eksempel. Følgende brukerform inneholder en kombinasjonsboks med en identifiserende etikett. Du vil fylle ut kombinasjonsboksen ved å bruke listen i A1: A6 (på et ark som heter LookupLists, som ikke vises på figuren). Det første trinnet er å lage et dynamisk område for listen som følger:
  1. Klikk på fanen Formler og klikk deretter Definer navn i gruppen Definerte navn for å åpne dialogboksen Nytt navn. I Excel 2003 velger du Navn fra Sett inn-menyen og velger deretter Definer.
  2. Skriv inn et navn for området, ColorList.
  3. I Refers To-kontrollen skriver du inn følgende uttrykk: = OFFSET (LookupLists! $ A $ 2, 0, 0, COUNTA (LookupLists! $ A: $ A) -1, 1). Oppslagslister er navnet på arket som inneholder listen over farger.
  4. Klikk OK.
Når du tilpasser uttrykket til ditt eget arbeid, må du ikke ta med en overskriftcelle i området (Oppslagslister! $ A $ 2). Identifiser bare cellene som inneholder faktiske listeelementer. I tillegg må begge cellehenvisningene oppgis som absolutte. Deretter oppretter du brukerformen som følger:
  1. Åpne Visual Basic Editor (VBE) ved å trykke på Alt + F11.
  2. Velg UserForm fra Sett inn-menyen.
  3. Bruk verktøykassen for å sette inn en kombinasjonsbokskontroll. Verktøykassen skal være synlig når du velger brukerform. Velg om nødvendig Toolbox fra Vis-menyen.
  4. Jeg la til en etikettkontroll og skrev inn teksten Color . Du kan hoppe over dette trinnet hvis du vil.
  5. Navn på kombinasjonsboksen kontroll cboColor.
Nå er du klar til å legge til koden som inneholder kombinasjonsboksen. Gjør det slik:
  1. Dobbeltklikk på brukerformen for å åpne modulen.
  2. Gå inn underprosedyren vist nedenfor:
 Privat underbrukerForm_Initialiser () 

'Populasjonsfarge-kombinasjonsboksen.

Dim rngColor As Range

Dim ws As regneark

Sett ws = Worksheets ("LookupLists")

For hver rngColor In ws.Range ("ColorList")

Me.cboColor.AddItem rngColor.Value

Neste rngColor

Slutt sub
For å se hvordan kombinasjonsboksen fungerer, går du tilbake til brukerformen (lukk modulen) og kjører den ved å klikke på F5. For hver setning inneholder listen listen med dataelementene i området ColorList. Lukk brukerformen. La oss nå legge til et element i ColorList og se hvor godt kombinasjonsboksen fungerer. Gå tilbake til arket som inneholder listen, og skriv Hvitt i celle A7. Gå deretter tilbake til VBE og kjør brukerformen en gang til. Som du ser, tilpasser rekkevnetavnet ColorList seg automatisk til å inkludere det nye listeelementet, White. Deretter fyller koden kombinasjonsboksen med hele listen, inkludert Hvit, uten endringer.

For å holde eksemplet enkelt, har jeg omgått hvilken som helst oppgave for datainnføring. I en applikasjon i den virkelige verden vil du sannsynligvis ønske å kopiere verdien som er valgt av kombinasjonsboksen til et datoperiode. Det krever tilleggskode. Jeg har bare vist deg hvordan du fyller kombinasjonsboksen med innholdet i et dynamisk område (liste).

© Copyright 2021 | mobilegn.com