Avatar billede svensk Nybegynder
12. juni 2007 - 14:33 Der er 25 kommentarer

Dropdown box

Hvordan opretter jeg en dropdownboxhvor jeg enten kan
1. tilføje flere data løbende
eller (hvis det ikke kan lade sig gøre)
2. hente data fra et andet ark i samme dokument (hvor jeg også her tilføjer data løbende)?
Avatar billede word-hajen Nybegynder
12. juni 2007 - 15:27 #1
Vi slår lige 1 og 2 sammen. Lav et ark, hvor du vil have dine data. Indtast dem, f.eks. i kolonne A. Navngiv hele kolonne A.

Når du laver din dropdown, kan du - i stedet for at angive et "alm." celleområde - angive navnet. Nu kan du fuldstændig frit regere rundt i kolonne A i dit dataark (tilføje, fjerne, redigere). Din dropdown afspejler så data i det navngivne område.
Avatar billede svensk Nybegynder
12. juni 2007 - 15:49 #2
Har prøvet det, men det vil ikke virke. Kan du skrive lidt mere udførligt, hvordan jeg skal gøre?
Avatar billede word-hajen Nybegynder
12. juni 2007 - 18:54 #3
Ind med data i kolonne A i et ark, som du vælger/opretter. Markér hele kolonnen. Klik i "navneområdet" (der hvor der normalt står A1, B2 osv. alt efter hvilken celle, du står i) og skriv det navn, som du ønsker at genkende dine data på (jeg kalder dem for eksemplets skyld Test - hvis du kalder det noget andet, skal du lige huske at skrive det, når du laver refereringen i datavalideringen).

Stil markøren i den celle, hvor du vil have din dropdown. Vælg Data - Validering - Liste. Ud for celleområde (har ikke lige adgang til en dansk version af Excel og kan ikke huske, hvad det hedder, men du finder det nok; der er jo ikke så meget at vælge imellem) skriver du =Test
Avatar billede svensk Nybegynder
13. juni 2007 - 08:25 #4
Perfekt, nu har jeg styr på det. Tak for hjælpen.
Avatar billede word-hajen Nybegynder
13. juni 2007 - 14:02 #5
Velbekomme - så tillader jeg mig at smide et svar :-)
Avatar billede h_s Forsker
18. juni 2007 - 18:17 #6
word-hajen> hvad nu hvis området der er navngivet indeholder 5 celler og så der kommer et navn i den 6. celle. Hvordan får man via en makro inkluderet den 6. celle til området?
Avatar billede word-hajen Nybegynder
19. juni 2007 - 13:01 #7
Hvis du har fulgt ovenstående instruktion, har du navngivet hele kolonnen og du kan derfor "bare" skrive i den 6. celle.
Avatar billede h_s Forsker
20. juni 2007 - 21:38 #8
Ja, men dropdownen er så også stor. Der skal kun være det antal linjer der er tekst i!
Avatar billede word-hajen Nybegynder
21. juni 2007 - 13:32 #9
-> h_s - håndteres normalt ved at klikke af i Ignore blank.
Avatar billede h_s Forsker
21. juni 2007 - 19:19 #10
Det var da en god ide :-) Viste ikke der fantes sådan en - Hvad hedder den på engelsk? Jeg har en dropdown i en formular der hentes frem via en makro.
Avatar billede word-hajen Nybegynder
22. juni 2007 - 08:27 #11
Ignore blank ;-)

En dropdrown på en formular og en dropdown i en celle er ikke det samme. Brug AddItem for hver celle i dit range, indtil der er en tom celle (duer selvfølgelig kun, hvis der ikke er blanke celler imellem).
Avatar billede h_s Forsker
22. juni 2007 - 12:37 #12
Der er ingen blanke celler imellem!
Du må lige forklare dem med AddItem - Det forstår jeg ikke!
Avatar billede word-hajen Nybegynder
22. juni 2007 - 14:25 #13
Fortæl du hellere mig, hvordan du tilføjer data til din combobox på formularen. Så skal jeg nok se, om jeg kan hjælpe dig videre.
Avatar billede h_s Forsker
22. juni 2007 - 21:20 #14
Jeg har følgende makro i en dropdown:

Private Sub tbSelskab_Change()
'Når et selskab vælges vises selskabets stationer i Sted

If tbSelskab = "Statoil" Then
With tbSted
    .RowSource = "Statoil"
    .ListIndex = 0
End With
End If

If tbSelskab = "HydroTexaco" Then
With tbSted
    .RowSource = "HydroTexaco"
    .ListIndex = 0
End With
End If

If tbSelskab = "Uno-X" Then
With tbSted
    .RowSource = "UnoX"
    .ListIndex = 0
End With
End If

If tbSelskab = "1-2-3" Then
With tbSted
    .RowSource = "StatoilBillig"
    .ListIndex = 0
End With
End If

If tbSelskab = "Shell" Then
With tbSted
    .RowSource = "Shell"
    .ListIndex = 0
End With
End If

If tbSelskab = "Q8" Then
With tbSted
    .RowSource = "QOtte"
    .ListIndex = 0
End With
End If
End Sub

Der sker det at når jeg vælger et bestemt selskab, får jeg mulighed for at vælge nogle steder (adresser) i en anden dropdown (tbSted). Dvs. at tbSted er lidt dynamisk, og der står forskellige antal steder i den. Jeg vil gerne have at der ikke er mange blanke felter i den!
Avatar billede word-hajen Nybegynder
22. juni 2007 - 21:37 #15
Der skal overhovedet ikke være blanke felter, så der er jeg helt med dig.

Jeg var nu ikke ude efter at vide, hvad der sker, når du vælger i din dropdown, men efter den kode hvor du tilføjer f.eks. Statoil og Q8 til din dropdown.
Avatar billede h_s Forsker
23. juni 2007 - 11:32 #16
Den er her:

Private Sub UserForm_Activate()
'Når ufNy_tankning åbnes hentes Selskaber ind i Selskabs-dropdown
With tbSelskab
    .RowSource = "Selskab"
    .ListIndex = 0
End With
End Sub

Men selskaberne er konstante.
Selskaberne hentes ind når formularen aktiveres!
Avatar billede word-hajen Nybegynder
23. juni 2007 - 12:43 #17
Du kan bruge denne procedure i stedet. Der indlæser du data fra området, indtil der er en blank celle. Det kræver selvfølgelig, at du ikke har nogle blanke celler imellem dine data (hvis du har, er du nødt til at fjerne tjekket på, om cellen er blank, men så bliver hele området løbet igennem, og det er rimelig mange celler).

*******************
Private Sub UserForm_Activate()
    Dim objRange As Range
    Dim lngItem As Long
   
    Set objRange = ActiveWorkbook.Names("Selskab").RefersToRange
   
    For lngItem = 1 To objRange.Rows.Count
        If objRange(lngItem) <> "" Then
            tbSelskab.AddItem (objRange(lngItem))
        Else
            Exit For
        End If
    Next lngItem

    tbSelskab.ListIndex = 0
   
    Set objRange = Nothing
End Sub
************************
Avatar billede h_s Forsker
24. juni 2007 - 14:41 #18
Tak skal du ha, men jeg er ikke helt sikker på du forstår mit problem.
Det er ikke i tbSelskab problemet er men i tbSted.
Avatar billede word-hajen Nybegynder
24. juni 2007 - 17:47 #19
Nej, du har ret. Jeg forstår ikke dit problem, hvis ikke det er at få data ind i en combobox; det er trods alt det spørgsmål, du er gået ind i.

Men så må du forklare mig, hvad problemet er. Ellers bliver det noget svært at hjælpe.
Avatar billede h_s Forsker
24. juni 2007 - 20:12 #20
Okay - Jeg har 2 dropdown - tbSelskab og tbSted - tbSelskab er den samme hver gang, så der har jeg ikke problemer.
tbSted er afhængig af hvad der vælges i tbSelskab - Hvis Statoil vælges i tbSelskab kan der i tbSted vælges de navne, der står i det område, der er defineret som Statoil - Se mit indlæg den 22/06-2007 21:20:22. I Statoils tilfælde er det defineret som Beregninger!$Y$2:$Y$21. I øjeblikket står der kun noget i Y2:Y8. Men da jeg har defineret området til og med Y21 er der mange blanke - og det er dem jeg vil slippe for.
Avatar billede h_s Forsker
24. juni 2007 - 20:16 #21
.. Så man kan sige, at jeg skal have hjælp til at definere området til at være fra Y2 til den sidste der er udfyldt.
Avatar billede word-hajen Nybegynder
24. juni 2007 - 22:17 #22
Du kan bruge ovenstående procedure, men undlade at gå ud af løkken, når der er en tom celle (dvs. slet linjerne med Else og Exit For). Du skal selvfølgelig rette dit range (objRange) og referencen til din kontrol.
Avatar billede word-hajen Nybegynder
24. juni 2007 - 22:24 #23
I øvrigt - læste lige dit indlæg igen (og tidligere indlæg). Du har da allerede navngivet områderne med stederne, ikk'? Sådan ser det i hvertfald ud længere oppe. Når jeg så kombinerer det med dine seneste 2 indlæg, ser det ud til, at du IKKE har tomme celler mellem stederne for hvert selskab. Hvis det er rigtigt, behøver du jo ikke slette linje Else og Exit for. Så er den procedure, som jeg har lavet 23/6 12:43.45 korrekt.

Men måske er problemet, at du ikke lige ved, hvordan du får defineret området - er det rigtigt?
Avatar billede word-hajen Nybegynder
24. juni 2007 - 23:00 #24
Tænkte lige videre ud af boldgaden. Mit forslag:

Alle selskaber i én kolonne - i kolonnen ved siden af skriver du navnet på det navngivne område, som indeholder stederne for det selskab. Navngiv begge kolonne som "Selskab". Lav din combobox i formularen om til at kunne indeholde 2 columns. Set BoundColumn til kolonne 2 og skjul 2. kolonne.

Nu kan du bruge værdien fra din combobox direkte i Change_Eventet:

Private Sub tbSelskab_Change()
    Dim objRange As Range
    Dim lngItem As Long
   
    If tbSelskab.Listindex <> -1 then
        Set objRange = ActiveWorkbook.Names(tbSelskab).RefersToRange
   
        For lngItem = 1 To objRange.Rows.Count
            If objRange(lngItem) <> "" Then
                tbSted.AddItem (objRange(lngItem))
            Else
                Exit For
            End If
        Next lngItem
        tbSelskab.ListIndex = 0
    End If

    Set objRange = Nothing

End with
Avatar billede word-hajen Nybegynder
02. september 2007 - 20:24 #25
Hvad er du kommet frem til her?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester