• 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.

Meedere selecties in een lijst

Status
Niet open voor verdere reacties.

Clit13

Terugkerende gebruiker
Lid geworden
11 jan 2001
Berichten
1.075
Beste...,

Ik heb een... uitdaging die lastig is uit te leggen.
In een sheet heb ik diverse lijsten staan.
Met een validatielijst kan ik een item uit een lijst selecteren. Dat gaat prima.
Echter, ik wil ook graag meerdere items uit een dergelijke lijst kunnen selecteren.
Bijvoorbeeld.
Ik wil een dag kunnen opdelen in blokken van 2 uur (08-10, 10-12, 12-14 en 14-16)
Ik heb dus een lijst van 4 blokken.
Als ik in een blok niets te doen heb, hoeft er ook niets in die cel te staan.
Wil ik echter een gevuld blok, dan moet er een "x" komen staan.
Als ik dit via een validatielijst wil doen, dan kan ik of blok 1, of blok 2, of blok 3 of blok 4 invullen en niet allemaal.
Het is niet de bedoeling de lijst uit te breiden met blok 1 + blok2, blok1 + blok 2 + blok 3, etc.
Dan krijg ik uiteindelijk een lijst van 16 items...

Hoe kan ik toch meerdere items selecteren om daar weer een bewerking op uit te voeren?

Ik hoop dat de vraag duidelijk is gesteld.


groet,
Dave.
 
Je hebt nog net antwoord op vrijdag... :D

Je moet een Listbox maken van de Controls Toolbox.

Dan met een stukje VBA code nagaan wat er moet gebeuren als je een wijziging doet.

Let ook speciaal op de eigenschappen van de Listbox, vooral dan op de MutliSelect eigenschap.

Zie tevens hier.

Zie bijlage.

Wigi
 

Bijlagen

Laatst bewerkt:
mmm, is toch niet helemaal wat ik zoek.
Het is niet mogelijk om dit via een drop down menu te doen?
Als dat niet mogelijk is, dan zal ik moeten proberen om via jouw oplossing naar mijn oplossing te komen.

Bedankt voor het reageren!


groet,
Dave.
 
Je zal moeten kiezen Dave.

Ofwel doe je zoals ik het toonde, en kan je meerdere selecties tonen. Ofwel doe je het zoals in bijlage met een combobox, en dan kan je slechts 1 keuze maken.

De code achter de combobox werkt niet.

Wigi
 

Bijlagen

En toch heb ik via jouw oplossing zelf de oplossing gevonden!
Misschien omdat ik consessies heb gemaakt of omdat ik logischerwijs meer informatie over mijn probleem heb dan jij had.
Ik de bijlage (als ik die kan bijsluiten) kun je zien hoe ik het heb opgelost.
Het is eigenlijk een workaround, maar zoals je al zei: het kan niet anders.
Vul eerst een categorie in (in dit geval maakt het niet uit wat je invult, uiteindelijk komt er een dropdownmenu).
Daarna een dag van de week (maa, din, woe, don of vri). Ook dit zal uiteindelijk een drop down menu worden.
Selecteer daarna 1 of meerdere (middels de [Ctrl] toets) namen en gebruik de macro via [Ctrl]-q.

Wat vind je ervan?



groet,
Dave.
 

Bijlagen

Wat vind je ervan?

Ik zal de code zo dadelijk eens doornemen, maar:

1. declareer je variabelen bovenaan de macro
bv.

Code:
Dim i As Integer

2. kijk ook eens naar het Worksheet_Change Event in de help files

Wigi
 
Dit is beter (en veel korter):

Code:
Sub Macro1Wigi()
Dim kol As Integer
Application.ScreenUpdating = False
Select Case Range("B13")
    Case "maa"
        kol = 2
    Case "din"
        kol = 3
    Case "woe"
        kol = 4
    Case "don"
        kol = 5
    Case "vri"
        kol = 6
End Select
Selection.Offset(, kol - 1) = Range("B12")
Range("A1").Select
Application.ScreenUpdating = True
End Sub

Merk ook op dat er een aantal fouten in je loops zaten (in jouw code dus).

Wigi
 
Laatst bewerkt:
Wigi,
Bedankt voor je voorbeeld.
Ik ben bang dat ik toch meer uitleg nodig heb, want ik snap de code niet.
Het werkt wel prima!
Gaat het ook werken als ik de sheet uitbreid met comboboxen e.d.?


groet,
Dave.
 
Ik heb het snel even geprobeerd, en in combinatie met combo boxen werkt het ook prima.
Wil niet zeggen dat ik de code nu begrijp....
Offset: in de help staat dat je daarmee de actieve cel kan wijzigen.
Maar gebruik jij hem ook zo?

Waarom zet je ScreenUpdating uit?

Waar is de variabele r voor?

groet,
Dave.
 
Laatst bewerkt:
Een probleem waar ik nu tegen aan loop is een Comment in de te vullen velden.
Bijvoorbeeld:
Als ik de V van verlof door de macro in laat vullen, dan wil ik dat de inhoud van een cell als comment erbij komt te staan.
De inhoud kan dan zijn: "griep" (of een andere enge ziekte ;) )
In een ander voorbeeld (waar ik helaas niet bij kan komen) heb ik dit wel kunnen vullen, maar als ik jouw code gebruik, zie ik geen mogelijkheid om het Comment te vullen.

Kun je me hierbij helpen?

groet,
Dave
 
Ik ben bang dat ik toch meer uitleg nodig heb, want ik snap de code niet.

Je selecteert (voor dat de code runt) de namen. Dan zet dit:

Code:
Selection.Offset(, kol - 1) = Range("B12")

de inhoud van B12 in de cellen van de selectie, maar dan een aantal kolommen naar rechts. Hoeveel kolommen? kol - 1 kolommen.

Meer gebeurt er niet, behalve dan nog op het einde cel A1 selecteren.

Met een combobox het normaal gezien ook werken, of moet je met een kleine aanpassing het gekozen element opvragen.

Wigi
 
Laatst bewerkt:
Wil niet zeggen dat ik de code nu begrijp....
Offset: in de help staat dat je daarmee de actieve cel kan wijzigen.
Maar gebruik jij hem ook zo?

Zie eerdere mail met uitleg.

Ja ik gebruik hem zo. De actieve cellen worden ergens anders gekozen. (een aantal kolommen naar rechts).

Waarom zet je ScreenUpdating uit?

Om je beeld niet te laten 'flitsen'.

Waar is de variabele r voor?

Mag weg, niet meer nodig. Heb hem in mijn code ook al weggedaan. Bedankt voor de opmerking.
 
Hier:

Code:
Sub Macro1Wigi()
Dim kol As Integer, r As Range, strOpmTekst As String
Application.ScreenUpdating = False
Select Case Range("B13")
    Case "maa"
        kol = 2
    Case "din"
        kol = 3
    Case "woe"
        kol = 4
    Case "don"
        kol = 5
    Case "vri"
        kol = 6
End Select

For Each r In Selection.Offset(, kol - 1)
    r = Range("B12")
    If Range("B12") = "V" Then
        On Error Resume Next
        strOpmTekst = r.Comment.Text
        If Err.Number = 0 Then r.Comment.Delete
        Err.Clear
        On Error GoTo 0
        With r.AddComment
            .Visible = False
            .Text "builenpest"
        End With
    End If
Next r
Range("A1").Select
Application.ScreenUpdating = True
End Sub

Wigi
 
Wigi,

Dank je voor je heldere uitleg.
Hier ga ik in de toekomst zeker nog wat aan hebben.
De code voor comment moet ik nog even doorspitten; eerst moet de kleine naar bed.
Misschien kom ik er morgen pas aan toe, maar ik zal zeker een reactie achter laten.
Nogmaals dank!


groet,
Dave.
 
Wigi,

Dank je voor je heldere uitleg.
Hier ga ik in de toekomst zeker nog wat aan hebben.
De code voor comment moet ik nog even doorspitten; eerst moet de kleine naar bed.
Misschien kom ik er morgen pas aan toe, maar ik zal zeker een reactie achter laten.
Nogmaals dank!

groet,
Dave.

Wat is nu het belangrijkste? De kleine of excel? Excel toch zeker...

Grapje uiteraard. Voor mij dringt het niet.

Wigi
 
geinporem.... ;)
Ik heb er hier 3 ziek.
Alleen ik heb nog geen last van een loopneus.
Daarom helaas erg weinig tijd voor mijn hobby...

Het gaat morgen worden.
Ik laat het je weten!
Prettige avond en tot morgen.



groet,
Dave.
 
Nou, het heeft even geduurd, maar ik moest de code volledig laten integreren met de bestaande code.
Uiteindelijk is het gelukt.
Eerst had ik een aantal dropdownlijsten om medewerker, type, aantal uur, etc aan te geven.
Nu moest ik de lijst "medewerker" verwijderen aangezien die via een selectie wordt gemarkeerd.
Dat leek simpeler dan het was.
Ik heb namelijk meerdere tabbladen en nadat ik alle wijzigingen op tabblad 1 had doorgevoerd en die wilde copieren naar de oveirge tabbladen, toen barste de hel los.
Er klopte helemaal niets meer van...
Eerst had ik op elk tabblad 1 knop, nu ineens 5!
Er zaten 4 knoppen over elkaar heen, dus verwidjeren kan ook niet zomaar.
Tevens is me nu opgevallen dat je niet meerdere knoppen tegelijk kan verwijderen (ook niet op verschillende tabbladen).
Dit kostte me ongeveer een half uur...

Al met al ben ik, dankzij jouw code, gelsaagd in mijn opzet.
Er zit, zoals gezegd, veel meer code achter en er zal nog wel meer code achter komen.
Niet allemaal zo netjes als jij gemaakt hebt (zoal sje al aangaf), maar het werkt, en dat is voor het moment het belangrijkste.

Wigi, Bedankt!!! :D



groet,
Dave.
 
... doorgevoerd en die wilde copieren naar de oveirge tabbladen, toen barste de hel los.

Wat was een antwoord van Dave met de nodige dramatiek.

Wat een macro al niet teweeg kan brengen... :D

Gelukkig is het nog goed gekomen.

Wigi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan