Avatar billede janvogt Praktikant
10. december 2003 - 10:44 Der er 21 kommentarer og
1 løsning

Udtræk fra multi listbox

Jeg har en userform med en listboks, hvor man har mulighed for at vælge flere emner - altså en multi listboks.

Lad os sige, at listen består af: Januar, Februar ..... December. Listen er et navngivet område fra Ark1 A1:A12.

Hvordan får jeg brugerens valg på listboksen trukket over i arket, f.eks. ved at sætte et 1-tal i området B1:B12 udfor de måneder, som et valgt.
Avatar billede bak Forsker
10. december 2003 - 11:00 #1
prøv med noget i dnne dur. Går ud fra at din liste hedder MONTHS

Private Sub CommandButton2_Click()
Dim i As Integer
For i = 0 To listbox1.ListCount - 1
  If listbox1.Selected(i) Then
  [MONTHS].Offset(i, 1) = listbox1.List(i)
  End If
Next i
End Sub
Avatar billede bak Forsker
10. december 2003 - 11:01 #2
Lige en lille fehler

Private Sub CommandButton2_Click()
Dim i As Integer
For i = 0 To listbox1.ListCount - 1
  If listbox1.Selected(i) Then
  [MONTHS].Offset(i, 1) = 1
  End If
Next i
End Sub
Avatar billede bak Forsker
10. december 2003 - 11:04 #3
Det er vist ikke helt rigtigt, men for at lave offset'en skal man bruge det første element.
Range("B1").Offset(i, 1) = 1
Avatar billede janvogt Praktikant
10. december 2003 - 11:26 #4
Det var bedre .... Tak skal du have bak.
Der er stadig en del VBA at lære ...... :-)
Smider du lige et svar.
Avatar billede bak Forsker
10. december 2003 - 11:38 #5
s'føli :-)
Avatar billede janvogt Praktikant
10. december 2003 - 11:38 #6
Min kode kom til at se sådan ud:

Private Sub cmdOk_Click()
    Dim i As Integer
    For i = 0 To lboMåneder.ListCount - 1
        If lboMåneder.Selected(i) Then
            Worksheets("List").Range("B1").Offset(i, 0) = 1
        End If
    Next i
    Unload Me
End Sub

Måske du kunne hjælpe med det lille tillægsspørgsmål:
Hvis jeg nu ønsker en streng, som ser sådan ud "001100000000", hvis man f.eks. vælger februar og marts, hvordan ser koden så ud?
Avatar billede janvogt Praktikant
10. december 2003 - 11:39 #7
Undskyld, der skal stå "..... hvis man f.eks. vælger marts og april ...".
Avatar billede bak Forsker
10. december 2003 - 12:08 #8
vil du have denne streng placeret ud for de aktuelle måneder eller vil du bare have den ud een gang
Avatar billede janvogt Praktikant
10. december 2003 - 12:20 #9
Forløbig bare som en variabel i koden.
Det er ment som et "sammenkog" af alle månedsvalg.
10. december 2003 - 12:22 #10
Jeg blander mig lige

Private Sub cmdOk_Click()
    Dim i As Integer
    Dim sMonth As String
    For i = 0 To lboMåneder.ListCount - 1
        If lboMåneder.Selected(i) Then
            Worksheets("List").Range("B1").Offset(i, 0) = 1
        sMonth = sMonth & "1"
        Else
            sMonth = sMonth & "0"
        End If
    Next i
    Range(WhereEver).NumberFormat = "000000000000"
    Range(WhereEver).Text = sMonth
    Unload Me
End Sub
Avatar billede janvogt Praktikant
10. december 2003 - 12:24 #11
Har løst det:
Private Sub cmdOk_Click()
    Dim i As Integer
    Dim Valg As Integer
    Dim Streng As String
   
    For i = 0 To lboMåneder.ListCount - 1
        If lboMåneder.Selected(i) Then
            Worksheets("List").Range("B1").Offset(i, 0) = 1
            Valg = "1"
        Else
            Valg = "0"
        End If
        Streng = Streng & Valg
    Next i
    'Worksheets("List").Range("B14").Value = streng
    Unload Me
End Sub
Avatar billede bak Forsker
10. december 2003 - 12:25 #12
:-) hej flemming, jeg nåede lige at opdatere

Private Sub cmdOk_Click()
Dim st As String
    Dim i As Integer
    For i = 0 To lboMåneder.ListCount - 1
        If lboMåneder.Selected(i) Then
            st = st & "1"
            Worksheets("List").Range("B1").Offset(i, 0) = 1
        Else
            st = st & "0"
        End If
    Next i
    Unload Me
End Sub
Avatar billede janvogt Praktikant
10. december 2003 - 12:27 #13
Takker flemming.
Rart at se, at du stadig kigger forbi ind i mellem :-)
10. december 2003 - 12:32 #14
Det sker nu og da :-)
10. december 2003 - 12:33 #15
I skulle nu lige kigge forbi denne her http://www.eksperten.dk/spm/437942 måske i kan bruge den sidste løsning.... det virker faktisk rigtig godt.
Avatar billede janvogt Praktikant
10. december 2003 - 12:35 #16
Tjekker ....
Avatar billede janvogt Praktikant
10. december 2003 - 12:47 #17
Ja, det fungerer upåklageligt.
Hvorfor er det nødvendigt med både en Worksheet_SelectionChange og en Worksheet_Change?
Avatar billede bak Forsker
10. december 2003 - 13:43 #18
Det smarte er at han bruger Worksheet_SelectionChange til at huske hvad der stod i cellen/rne inden de bliver ændret (indlæses i de variable han definerer i toppen), og derefter genbruger disse værdier når cellen/rne er blevet ændret Worksheet_Change

smart
10. december 2003 - 15:02 #19
tak bak - præcist.... men når der er valgt flere celler, og der indtastes i dem, så skifter ActiveCell, men det reagerer Worksheet_SelectionChanges ikke på... derfor bruges Worksheet_Change faktisk også til at huske den aktive cells tidligere værdi...
Avatar billede bak Forsker
10. december 2003 - 15:15 #20
Det var da en væsentlig detajle, jeg der havde overset :-)
Avatar billede janvogt Praktikant
10. december 2003 - 15:30 #21
Ok, så blev jeg lidt klogere :-)

Der var én måde makroen ikke fungerede helt hensigtsmæssigt på:
Jeg opdaterer ofte mange celler ad gangen ved at markere et område og så taste en værdi efterfulgt af CTRL+ENTER. Herved bliver alle celler udfyldte med den pågældende værdi.
I makroen bliver kun den første celle (den aktive) behandlet.
10. december 2003 - 15:45 #22
Ja, den kan kun håndtere en celle ad gangen, men kan sikkert udvides, hvis det en dag slukke blive nødvendigt *gg*
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