Goedenmiddag,
Ik ben al een tijdje aan de slag met een planningsysteem voor een supermarkt, en gebruik daarvoor Excel en (via VBA) een Access database. Nu loop ik echter tegen 2 problemen aan:
Alvast bedankt!
Ik ben al een tijdje aan de slag met een planningsysteem voor een supermarkt, en gebruik daarvoor Excel en (via VBA) een Access database. Nu loop ik echter tegen 2 problemen aan:
- Ik heb een lijst met namen (aanpasbaar door user)(variabele lengte) die als opties worden 'gebruikt' in 26 dropdownboxen (niet middels data validatie maar een 'echt' userform). Telkens als de lijst wordt aangepast door de gebruiker, schrijf ik de namen naar de database en wil ik de nieuwe lijst in de dropdownboxen laden. Hiervoor gebruik ik in VBA de volgende code:
code:1 2 3 4 5 6 7 8 9 10 11
'Defineer nieuwe range strNewRange = "$L$3:$M$" & (i - 1) Set VullerRange = Sheets("Dag Instellingen").Range(strNewRange) ActiveWorkbook.Names.Add Name:="VullersRange", RefersTo:=VullerRange With Application.ActiveSheet .Select_1_1.ListFillRange = "VullersRange" .Select_1_2.ListFillRange = "VullersRange" etc End With
Het probleem hiermee dat deze constructie nogal traag is, omdat er op deze manier 26*+-14 cellen moeten worden uitgelezen in en de dropdownboxen gezet moet worden. Dit duurt ongeveer 2 seconden, en is erg ongewenst. Ik hoopte de boel sneller te maken door een Named Range aan te maken, en alle dropdownboxes die range te voeren, maar ipv het één keer inlezen leest VBA/Excel nog steeds 26 keer de range in. Is er een manier om dit sneller te krijgen? - Als de user een wijziging maakt in een van de checkbox, wil ik graag bepaalde code uitvoeren. Het allermooist zou zijn dat dit getriggerd wordt door worksheet_change (en dan filteren op de target cell). Ik hoopte dit te bereiken door een linked cell aan te geven per dropdownbox, waarin hij dus het Id van de geselecteerde persoon schrijft. Dat gebeurt ook wel (bij het veranderen van de geselecteerde optie schrijft hij keurig het Id van die persoon naar een cel), maar de worksheet_change wordt niet getriggerd. Vervolgens probeerde ik code te koppelen via Sub Select_1_1_Change(), echter wordt deze ook getriggered als de ListFillRange gebruikt wordt (en bij andere handeling die ik met VBA uitvoer op de dropdownbox). Het filteren hiervan is erg lastig, omdat ik het onderscheid niet kan maken tussen een verandering van de selectie door VBA of door een user (Application.EnableEvents = False werkt niet voor userforms, helaas). Is er een manier om worksheet_change te triggeren bij het wijzigen van een selectie in de dropdownbox?
Alvast bedankt!