• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

UserForm met 2 listboxen

Status
Niet open voor verdere reacties.

appie36

Gebruiker
Lid geworden
19 mei 2009
Berichten
196
Hallo,

In de bijlage een voorbeeldje, hier heb ik 2 listboxen in een userform, listbox 1 en 2 is zijn multie select. Textbox 1 is voor de datum.
Selecteer is meerdere percelen en voer een datum in dan staat de datum er netjes achter.
Nu wil ik ook de gegevens van listbox 2 werkzaamheden gebruiken zodat ook deze gegevens worden meegenomen, dit lukt me niet.

Heb ik dus bijvoorbeeld op perceel 3 en 4 de werkzaamheden werk1 en werk2 gedaan op 25-1-2017 wil ik dat het met 1 klik word:

perceel 3 25-1-2017 werk1
perceel 3 25-1-2017 werk2
perceel 4 25-1-2017 werk1
perceel 4 25-1-2017 werk2

Misschien heeft iemand een oplossing, ik kom er niet uit hoe ik Listbox 2 kan toevoegen.

Mvg
Ab
 

Bijlagen

  • Map1.xlsm
    19,2 KB · Weergaven: 68
Bv.
Code:
Private Sub CommandButton1_Click()
Dim x As Long, xx As Long, y As Long
For xx = 0 To ListBox2.ListCount - 1
 If ListBox2.Selected(xx) Then c00 = c00 & "," & xx
Next xx
For x = 0 To Me.ListBox1.ListCount - 1
  If Me.ListBox1.Selected(x) Then
    Blad1.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 3) = Array(ListBox1.List(x), TextBox1, ListBox2.List(Split(Mid(c00, 2), ",")(y)))
       ListBox1.Selected(x) = False
       ListBox2.Selected(Split(Mid(c00, 2), ",")(y)) = False
       y = y + 1
    End If
 Next x
End Sub
 
Laatst bewerkt:
Harry,

Mijn zelf gemaakte code snapte ik, deze kan ik nog niet goed doorgronden.

Mijn bedoeling is : als je bijvoorbeeld 1 perceel aanklikt en 3 werkzaamheden dat je dan 3 regels krijgt.
Heb je dan 3 percelen en 3 werkzaamheden krijg je al 9 regels.

Ik hoop dat zoiets te maken is. Ik ben nog beginnende met VBA maar begint me steeds duidelijker te worden.

Mvg

Ab
 
Ab,

Dan zou het zo goed moeten zijn.
Code:
Private Sub CommandButton1_Click()
Dim j As Long, jj As Long                 'declareren van variabelen.
For j = 0 To ListBox1.ListCount - 1     'loop alle rijen in de listbox1 af
 If ListBox1.Selected(j) Then             'is er iets geselecteerd ?, ga dan verder met de coderegel hier onder, anders naar End if net boven Next j
   For jj = 0 To ListBox2.ListCount - 1  ' loop alle rijen af in Listbox2
     If ListBox2.Selected(jj) Then         .is er iets geselecteerd?, ga naar de code regel hier onder, anders naar End if net boven Next jj
       Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 3) = Array(ListBox1.List(j), TextBox1, ListBox2.List(jj))  'schrijf alles in een array weg (naast elkaar) op de eerst volgende lege rij.
      End If    'einde van controle van een selectie van Listbox2
     Next jj    'kijk of er een een volgende van Listbox2 is geselecteerd
   End If       'einde controle van een selectie van Listbox1
Next j          'kijk of er een volgende van listbox1 is geselecteerd
For j = 0 To ListBox1.ListCount - 1    'loop alle rijen af van listbox1 (in dit geval kan dat met 1 lus doordat de Listcount even groot is in beide Listboxes.
  ListBox1.Selected(j) = False          'zet de selectie uit van Listbox1
  ListBox2.Selected(j) = False          'zet de selectie uit van Listbox2
Next j                                         'volgende selectie tot ListCount -1
End Sub
 
Laatst bewerkt:
Harry,

Dit is perfect, denk ook dat ik het bijna snap. Maar is het mogelijk dat je het uitlegt wat er precies gebeurt in de formule?

Weet jij misschien ook een site waar je een goede uitleg van VBA voor excel kan vinden?.

Mvg
Ab
 
Ik heb geen flauw idee, welk site voor beginners.
Een goede site is van @snb, snb.eu (vba voor smarties of zoiets?, maar is niet voor beginners.

Misschien is een boek iets.

Ik zal de code in mijn vorig schrijven straks even van commentaar voorzien.
Als je die dan kopieert staat het er netjes in de Vb-editor in een groen kleurtje.
 
Ik heb de code van commentaar voorzien Ab.

Let erop dat ik met 1 lus werk voor beide listboxes (om ze weer te deselecteren), doordat ze even groot zijn (Listcount -1).
Mocht je een van de twee gaan uitbreiden met meer listrows, dan zou je met twee lussen moeten werken om de selectie weer ongedaan te maken.

Succes ermee.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan