het is mogelijk het gewenste te realiseren zonder vba. dat gezegd zijnde, het is eenvoudiger met vba (expermenteer via de macro-opnamefunctie!) of inderdaad eenvoudiger met behulp van een database.
als je persé het flexibele formulepad wil bewandelen, doe het volgende :
- maak een xlm-naam aan die een overzicht maakt van alle tabbladen. deze naam is een horizontale array met alle werkbladnamen, die je transponeert tot een verticale lijst, dit is handiger om mee te werken.
excelmenu > invoegen > naam > definiëren : je geeft deze excelnaam een zelfgekozen naam, bv. "allewerkbladen" (zonder " uiteraard) : verwijst naar : =WERKMAP.LEZEN(1+0*NU())
werkmap.lezen is eigenlijk een xlm macro statement dat dateert van excel 4.0 en lager, maar nog steeds via het naamdefinitiemechanisme of via een macrosheet beschikbaar is. de +0*NU() zorgt ervoor dat de aldus bekomen lijst met werkbladen dynamisch bijgewerkt wordt van zodra er iets op de werkbladen verandert of een werkblad verwijderd wordt.
maak een blanco totaalblad aan waarop je deze formule gaat toevoegen om het totaal gewerkte uren te bekomen. selecteer een voldoende groot aantal rijen, bv. van A1 tem A30, zodat de lijst ook in de toekomst correct bijgewerkt wordt als je personen gaat toevoegen.
met nog steeds al deze rijen geselecteerd, typ je in de eerste cel ervan de matrixformule {=transponeren(allewerkbladen)}. de accolades typ je niet zelf maar worden automatisch geplaatst van zodra je bevestigt met ctrl shift enter ipv enkel de entertoets voor een gewone formule.
indien deze stap correct werd uitgevoerd, heb je nu de lijst van alle werkbladen (1 per rij), met als resultaat #N/B voor (nog) niet bestaande werkbladen.
- nu kan je met de reeds vermelde =indirect functie deze lijst gebruiken om de sommering te doen : indien de totaal gewerkte tijd per persoon zich bv. in cel D4 bevindt van ieder werkblad, geeft volgende formule in cel B1 van het totaalblad de inhoud van blad1 weer : =INDIRECT(A1&"!D4")
- door een sommering van bereik B1:B30 bekom je nu het gewenste totaal aantal uren voor alle personen. (let op met de foutmeldingen van onbestaande werkbladen)
voor dat je verder gaat met vragen stellen : probeer eerst een en ander uit, laat weten waar je vastloopt en dan kunnen we eventueel verder helpen. aan scriptrequestjes doen we niet, zoals je al wist trouwens