02. december 2004 - 09:06Der er
8 kommentarer og 1 løsning
Listeopslag - flere valg ønskes muligt
Jeg er ved at lave lille prototype af leverandørdatabase i Excel.
I nogle felter har jeg valgt at bruge liste formatteringen, hvor man vælger fra liste. Nu kunne jeg så godt tænke mig, at det var muligt at foretage mere end ét valg samtidig. Altså f.eks. 3 varegrupper tilknyttet samme leverandør. Her tillader listeopslag kun ét valg. Jeg forestiller mig at cellerne så skal fomatteres med justering, så den enkelte celle blot udvides til at vise alle de valgte poster, men hvordan?
Hvis du sætter egenskaben Multiselect til at være 1-fmMultiSelectMulti på din listbox, så kan du foretage mere end ét valg. Med denne her macro kan du læse hvilke der er valgt og skrive dem til celle A1 i dit ark og tilpasse kolonnen i bredden: Private Sub LæsListbox() Dim i As Integer Dim Valg As String For i = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(i) Then Valg = Valg & " " & ListBox1.List(i) End If Next Range("A1").Value = LTrim(Valg) Columns("A:A").Select Columns("A:A").EntireColumn.AutoFit End Sub
> fobian. Mit spørgsmål er vist ikke helt præcist. Måske fordi jeg ikke har arbejdet med området før. Den liste jeg har valgt er valgt via datavalidering og ikke et kontrolelement, der er oprettet. Måske kontrolelementet ville kunne løse opgaven, men jeg var lige så tilfreds med at datavalideringen. Hvordan får jeg kontrolelementet til at slå op i specifikt dataområde?
Hvis du laver en listbox som kontrolelement kan du få den til at slå værdier op i et område i dit regneark ved at sætte egenskaben "ListFillRange" til f.eks at være "Ark1!A2:A100". Så vil de værdier i område A2 til A100 blive vist i din listbox.
Det begynder at tage form. Kan du også fortælle hvordan jeg får linieskift ind i stedet for mellemrum. Linieskift indenfor boksen vil normalt være Alt+Enter
Jeg mener ikke, at du kan dele én celles indhold over flere linier i en listbox ligesom du gør i Excel med Alt+Enter. Du kan styre det ved at gøre listboxen bredere eller ved at bruge scroll-baren nederst i boxen.
Det er OK at jeg ikke kan styre i listboxen, men via din macro ovenfor kan jeg i f.eks. celle A1 skrive valget til celle. I din macro adskiller du værdierne med blank celle Valg = Valg & " " & ListBox1.List(i) Det er i stedet for den blanke celle jeg gerne ville have et linieskifte inde i cellen som ved Alt+Enter. Er det muligt?
Tak for points :o) Nu er jeg med på, hvad du spurgte om før :o)
Hvis du vil have delt det over flere linier bruger man VBLF i stedet for " ". Så koden kommer til at se sådan ud: Private Sub LæsListbox() Dim i As Integer Dim Valg As String For i = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(i) Then If Valg <> "" Then Valg = Valg & vbLf & ListBox1.List(i) Else Valg = ListBox1.List(i) End If End If Next Range("A1").Value = Valg Columns("A:A").Select Columns("A:A").EntireColumn.AutoFit Range("A1").Select End Sub
Du kan også godt få den til at skrive resultatet over flere celler, så er koden i stedet:
Private Sub LæsListbox() Dim i As Integer Dim Valg As String Dim Antal As Integer Antal = 1 For i = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(i) Then Range("A" & Antal).Value = ListBox1.List(i) Antal = Antal + 1 End If Next Columns("A:A").Select Columns("A:A").EntireColumn.AutoFit Range("A1").Select End Sub
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.