Avatar billede sophus.00 Nybegynder
03. oktober 2009 - 18:36 Der er 4 kommentarer og
1 løsning

VBA: Forms, ListBox

Hej

Jeg har en Userform med nogle forskellige kontrolelementer på, blandt andet en checkbox og en listbox.
Jeg bruger følgende kode i UserForm_Initialize()
    Dim a As Integer
    For a = 3 To 9
        If Range("A" & a) = "" Then
        Else
            ListBox1.AddItem Range("A" & a)
        End If
    Next a
Da jeg har mine data til ListBox'en i felt A3:A9, men det kun er de felter der har indhold der skal medtages, så fungere dette som sådan fint nok.

Om ListBox.Enabled er sat til True eller False afgør min checkbox, men osm standard er den sat til false.

Jeg ønsker alle mine items markeret fra starten af. Jeg ved jeg kan gøre det med ListBox1.Selected(nummer) = True. Problemet er bare at jeg ikke ved hvordan jeg skal få automatiseret processen. Den ene gang formen bruges kan der jo være op til 3, og den anden gang op til 7?

Derudover mangler jeg inspiration til hvordan jeg arbejder videre med dataene. Altså hvordan jeg bagefter får tjekket hvilke felter der er selected og så udfra det kan arbejde videre med dem, men det tror jeg kommer nogenlunde snildt når først jeg har fundet ud af det første :-)

Skriv endelig hvis I har uddybende spørgsmål, f.eks. hvis jeg ikke har fået gjort det forståeligt nok :)
Avatar billede tjacob Juniormester
04. oktober 2009 - 11:18 #1
uddybende spørgsmål:

1) Hvad har checkboxen med sagen at gøre?
2)"Jeg ønsker alle mine items markeret fra starten af."
Det er ikke muligt. Du kan kun selecte et item i en listbox ad gangen?
3)..."hvordan jeg bagefter får tjekket hvilke felter der er selected"...
Er det nu felter i regnearket eller hvad?
Avatar billede sophus.00 Nybegynder
04. oktober 2009 - 13:42 #2
Hej

1) CheckBox'ens value har betydning for om ListBox.Enabled er true eller false. Men det er vel egentlig ret underordnet.

2) Jeg har sat ListBox.MultiSelect til "1"

3) Nej, det er item's i ListBox'en

Jeg håber det var svar på dine spørgsmål, ellers må du skrive igen! :-)
Avatar billede tjacob Juniormester
04. oktober 2009 - 15:19 #3
Ja, jeg havde lige overset multiselect.....

en måde at liste de indexer der er selected:

    Dim i As Long, j As Long
    Dim SelectedItems() As Long
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then
            ReDim Preserve SelectedItems(j)
            SelectedItems(j) = i
            j = j + 1
        End If
    Next i


Alternativt kan du sætte SelectedItems som String, og i stedet tilskrive værdien ListBox1.List(i)
Avatar billede sophus.00 Nybegynder
05. oktober 2009 - 19:39 #4
Tusind tak for hjælpen!

Vil du ligge et svar?
Avatar billede tjacob Juniormester
05. oktober 2009 - 20:04 #5
OK, -svar.
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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