Avattava luettelo monivalintatoiminnolla

Klassinen Excel-taulukon avattava luettelo on hieno, mutta sen avulla voit valita vain yhden vaihtoehdon esitetystä joukosta. Joskus tämä on juuri sitä, mitä haluat, mutta on tilanteita, joissa käyttäjän on voitava valita jonkin verran elementtejä luettelosta.

Katsotaanpa useita tyypillisiä tällaisen monivalintaluettelon toteutuksia.

Vaihtoehto 1. Vaaka

Käyttäjä valitsee kohteet avattavasta luettelosta yksitellen, ja ne näkyvät muutettavan solun oikealla puolella ja luetellaan automaattisesti vaakasuunnassa:

Tässä esimerkissä solujen C2:C5 pudotusluettelot luodaan tavallisella tavalla, ts

  1. valitse solut C2:C5
  2. välilehti tai valikko Päiväys valitse joukkue data Validation
  3. valitse avautuvassa ikkunassa vaihtoehto Lista ja määritä alueeksi lähde solut, joissa on lähdetiedot listalle A1:A8

Sitten sinun on lisättävä taulukkomoduuliin makro, joka tekee kaiken päätyön, eli lisää valitut arvot vihreiden solujen oikealle puolelle. Voit tehdä tämän napsauttamalla hiiren kakkospainikkeella arkkivälilehteä, jossa on avattavat luettelot, ja valitsemalla komento Lähdekoodi. Liitä seuraava koodi avautuvaan Visual Basic -editori-ikkunaan:

Private Sub Worksheet_Change(ByVal Target as Range) Virheessä Jatka seuraavaksi, jos ei leikkaa(tavoite, alue("C2:C5")) on ei mitään ja Target.Cells.Count = 1 sitten Application.EnableEvents = Väärä jos Len(Target.Offset (0, 1)) = 0 Sitten Target.Offset(0, 1) = Target Muu Target.End(xlToRight).Offset(0, 1) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

Korvaa tarvittaessa tämän koodin toisella rivillä olevien avattavien luetteloiden C2:C5 herkkä alue omallasi.

Vaihtoehto 2. Pysty

Sama kuin edellisessä versiossa, mutta uusia valittuja arvoja ei lisätä oikealle, vaan alareunaan:

Se tehdään täsmälleen samalla tavalla, mutta käsittelijän makrokoodi muuttuu hieman:

Private Sub Worksheet_Change(ByVal Target as Range) Virheessä Jatka seuraavaksi, jos ei leikkaa(Target, Range("C2:F2")) on ei mitään ja Target.Cells.Count = 1 sitten Application.EnableEvents = Väärä jos Len(Target.Offset (1, 0)) = 0 Sitten Target.Offset(1, 0) = Target Muu Target.End(xlDown).Offset(1, 0) = Tavoitteen loppu, jos Target.ClearContents Application.EnableEvents = Todellinen loppu, jos loppu-ali  

Korvaa tarvittaessa C2:F2-pudotusvalikon herkkä alue omallasi tämän koodin toisella rivillä.

Vaihtoehto 3. Keräytyminen samaan soluun

Tässä vaihtoehdossa kerääminen tapahtuu samassa solussa, jossa avattava luettelo sijaitsee. Valitut elementit erotetaan millä tahansa tietyllä merkillä (esimerkiksi pilkulla):

Vihreisiin soluihin avattavat luettelot luodaan täysin normaalilla tavalla, kuten edellisissä menetelmissä. Kaikki työ tehdään jälleen taulukkomoduulin makrolla:

Private Sub Worksheet_Change(ByVal Target as Range) Virheessä Jatka seuraavaksi, jos ei leikkaa(Target, Range("C2:C5")) on ei mitään ja Target.Cells.Count = 1 Sitten Application.EnableEvents = Väärä uusiVal = Kohdesovellus.Kumoa oldval = Target If Len(vanha) <> 0 Ja oldval <> newVal Then Target = Target & "," & newVal Else Target = newVal End If If Len(newVal) = 0 Then Target.ClearContents Application.EnableEvents = True End If Lopeta ala  

Halutessasi voit korvata koodin 9. rivin erotinmerkin (pilkun) omallasi (esimerkiksi välilyönnillä tai puolipisteellä).

  • Kuinka luoda yksinkertainen pudotusvalikko Excel-arkin soluun
  • Avattava luettelo sisällöllä
  • Pudotusvalikko, johon on lisätty puuttuvat vaihtoehdot
  • Mitä makrot ovat, miten niitä käytetään, mihin makrokoodi lisätään Visual Basicissa

Jätä vastaus