Sama lista useisiin ComboBoxeihin VBA:lla?

Excelsson

Taul1:ssä esim. 20 ComboBoxia. Kuinka saadaan kaikkiin compoihin sama lista lyhyemmällä koodilla, ettei tarvi jokaista compoa erikseen määritellä samoilla listakohteilla? (Alla esimerkki). For...Next?

With Taul1.ComboBox1
.AddItem ("Yksi")
.AddItem ("Kaksi")
....jne....
End With

With Taul1.ComboBox2
.AddItem ("Yksi")
.AddItem ("Kaksi")
....jne.......

Kiitos!

4

104

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • vaihda taulukon nimi sopivaksi ja luetteloalue nyt A1:AXXXXXX
      Option Explicit
      Sub Täytä()
      Dim OLEobj As Object
      Dim Lista As Variant
      Lista = Sheets("Sheet1").Range("A1", Sheets("Sheet1").Range("A65536").End(xlUp))
      For Each OLEobj In ActiveSheet.OLEObjects
      If TypeName(OLEobj.Object) = "ComboBox" Then
      OLEobj.Object.List = Lista
      End If
      Next OLEobj
      End Sub

      Keep EXCELing
      @Kunde

    • Excelsson

      Kiitos paljon!

      Sain toimimaan seuraavalla muutoksella. Compokohteet sijaitsevat B50:B60.

      Lista = Sheets("Sheet1").Range("B50:B60")

      Alkuperäinen pätkä:
      Lista = Sheets("Sheet1").Range("B50", Sheets("Sheet1").Range("B60").End(xlUp))

      ..listaa vain rivit B49:B50, eli yhtä riviä liian ylhäältä ja vain kaksi kohdetta.
      Käytössäni on Excel 2003 versio, olisiko sillä vaikutusta asiaan?

      Tietysti nyt kaikkissa taulukon kompoissa on sama lista ja taulukossa on kaksi muuta compolistaa, mutta ne määritellään nyt erikseen käyttäen ensin .Clear toimintoa :)

      Pistän haastetta :) Kuinka määritellään sitten useampi comporyhmä eri listoilla? Eli compot 1-10 Lista1, compot 11-20 Lista2, compot 21-30 Lista3 jne...

      • Alkuperäinen pätkä:
        Lista = Sheets("Sheet1").Range("B50", Sheets("Sheet1").Range("B60").End(xlUp))

        ..listaa vain rivit B49:B50, eli yhtä riviä liian ylhäältä ja vain kaksi kohdetta.
        Käytössäni on Excel 2003 versio, olisiko sillä vaikutusta asiaan?

        EI
        Sheets("Sheet1").Range("B60").End(xlUp)
        ko. koodin pätkä valitsee solun B49 eli sinulla on solussa B49 joku arvo jolloin valinnaksi tulee koodissa Lista = Sheets("Sheet1").Range("B50", Sheets("Sheet1").Range("B60").End(xlUp)) B50:B49...

        eli muutat sitä arvoa B61 tai tarpeeksi kauaksi. Tietenkin jos sulla listat allekkain silloin ainut keino on hard codeta ne tyyliin Lista = Sheets("Sheet1").Range("B50:B60") kuten olet tehnyt


        no haasteeseen sitten...
        ei siinä tartte kummosta lisäystä

        Option Explicit
        Sub Täytä()
        Dim OLEobj As Object
        Dim Lista1 As Variant
        Dim Lista2 As Variant
        Dim Lista3 As Variant
        Lista1 = Sheets("Sheet1").Range("B50", Sheets("Sheet1").Range("B600").End(xlUp))
        Lista2 = Sheets("Sheet1").Range("C50", Sheets("Sheet1").Range("C600").End(xlUp))
        Lista3 = Sheets("Sheet1").Range("D50", Sheets("Sheet1").Range("D600").End(xlUp))
        For Each OLEobj In ActiveSheet.OLEObjects
        If TypeName(OLEobj.Object) = "ComboBox" Then
        Select Case Mid(OLEobj.Name, 9)
        Case 1 To 10
        OLEobj.Object.List = Lista1
        Case 11 To 20
        OLEobj.Object.List = Lista2
        Case 21 To 30
        OLEobj.Object.List = Lista3
        End Select
        End If
        Next OLEobj
        End Sub


        keep EXCELing
        @Kunde


    • Excelsson

      Kolahti :)

      Kiitos!

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Kuolemanrangaistus

      Mielestäni kuolemanrangaistus on väärin kaikissa tilanteissa. Vaikka joku olisi murhannut 10 ihmistä, hänen surmaaminen
      Laki ja rikos
      25
      3686
    2. Muistakaa persut, että TE petitte, ei kokoomus

      Miksikö kukaan ei arvostele kokoomusta? No sen vuoksi, että kokoomus noudattaa vaalilupauksiaan. Sen sijaan TE persut,
      Maailman menoa
      177
      3324
    3. Seuraava hallituspohja - Kokoomus, kepu, persut + KD

      Kokoomus saa ainakin 20% kannatuksen ensi vaaleissa, keskusta sanoisin noin 15%, persut todennäköisesti enemmän, ehkä 17
      Maailman menoa
      230
      2873
    4. Outo ilmiö - vasemmistolaiset eivät kirjoita mitään kokoomuksesta

      joka sentään johtaa hallitusta, ja jonka talouspolitiikkaa noudatetaan. Nämä muutamat vasemmistolaiset jotka täällä aina
      Maailman menoa
      71
      2469
    5. Maria Veitola kommentoi soutelija Saarion huomionhakuisuutta

      "Minusta on jotenkin kuvottavaa, kuinka kovalla intensiteetillä Suomi-media seuraa miessankari Jari Saarion merihätää. S
      Kotimaiset julkkisjuorut
      312
      1776
    6. Väestöstä vain vassarit vaihtuvat nopeammin kuin persut

      Kevääseen 2023 verrattuna vassareita 50 prosenttia enemmän, ja persuja 25 prosenttia vähemmän.
      Maailman menoa
      9
      1500
    7. Vihervassarit

      Vihervassarit sitä, vihervassarit tätä. Minulla on paha mt-ongelma. Se tuli lobotomian jälkioireina. Vihervassarit tät
      Maailman menoa
      26
      1386
    8. Lopetan ikävöinnin

      Ei meistä enää koskaan tule mitään. Olen ikävöinyt ja kaivannut enkä saa mitään vastakaikua ja lämpöä. Parempi erillään
      Ikävä
      3
      1311
    9. Ei ole liian myöhäistä..

      Tule mun luo ja katso silmiin, niin saadaan taas se sanaton yhteys ja sano sitten vain anteeksi rakas ja suutele ja hala
      Ikävä
      3
      1072
    10. Esprit hoitokdit Varkaudessa?

      Asun keskisuomessa ja käyn satunnaisesti äitini luona Varkaudessa. Äitin tarvitsee kohta hoitajan kotiin tai hoitokodin
      Varkaus
      2
      935
    Aihe