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
- valitse solut C2:C5
- välilehti tai valikko Päiväys valitse joukkue data Validation
- 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