Tijdsregistratie in Excel
Ik kan in Excel een datum en tijd invoegen door in een cel =vandaag of =nu() in te tikken, zodat ik in die cel bij het openen van het document telkens de actuele tijd zie. Hoe kan ik echter in een cel zien wanneer de laatste wijziging aan het document werd doorgevoerd? Idealiter zou ik dat ook nog eens voor ieder werkblad apart (in hetzelfde document) willen zien. De tijd zou echter niet mogen wijzigen als er op dat werkblad geen aanpassingen werden doorgevoerd.
Guido Eerlings
Dat kan inderdaad, en wel met behulp van een paar regeltjes VBA-code (Visual Basic for Applications), een programmeertaal die bedoeld is om toepassingen – zoals die in Microsoft Office – te automatiseren of met nieuwe functies uit te breiden. Een cursus VBA kunnen we je hier niet aanbieden, maar als je de volgende instructies nauwgezet uitvoert, kom je er ook wel.
Maak bij wijze van experiment een nieuwe werkmap in Excel; wij nemen Excel 2007 als voorbeeld. Je zult merken dat Excel standaard al drie werkbladen heeft (zie de tabs Blad1, Blad2 en Blad3 onderaan links), en dat is prima voor ons experimentje.
Klik met de rechtermuisknop op de tab Blad3 en kies Naam wijzigen. Geef het blad de naam Registratie mee. Klik nu met de rechtermuisknop op de tab Blad1 en selecteer Programmacode weergeven. In het venster Blad1 (Code) voer je exact de volgende code in:
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("Registratie").Range("A1") = Now
End Sub
(Merk op dat de naam van je tab ook in deze code voorkomt!)
Open in het venster van Microsoft Visual Basic nu het menu Bestand en kies Sluiten en terugkeren naar Microsoft Excel. Herhaal deze procedure voor tab Blad2 (vervang “A1” in deze code echter door “A3”).
Open nu Blad1 en wijzig een of meer cellen op willekeurige wijze. Wacht een paar minuten en wijzig ook iets op Blad2. Je merkt: de tijd van deze wijzigingen werd netjes geregistreerd op het werkblad Registratie: in cel A1 vind je de tijd terug waarop werkblad 1 het laatst werd aangepast en in cel A3 de tijd van de laatste wijziging op werkblad 2.
Krijg je alleen ######## in de cellen A1/A3 te zien, dan moet je die A-kolom gewoon wat verbreden. Je zult je werkmap wel moeten opslaan in een bestandstype dat met macro’s overweg kan: kies Opslaan als en in het gelijknamige veld selecteer je vervolgens Excel-werkmap met macro’s (*.XLSM).
Afhankelijk van de ingestelde opties krijg je bij het openen wellicht ook nog een waarschuwing dat de macro’s zijn uitgeschakeld. Via de knop Opties kan je die alsnog activeren, of je geeft vanuit het Vertrouwenscentrum in Excel aan dat je alle macro’s wil inschakelen (wat uiteraard minder veilig is).
Nog dit: als je dat verkiest, kun je het Registratie-werkblad standaard verbergen: klik de tab met de rechtermuisknop aan en kies Verbergen. Om het weer op te diepen, open je in het lint de tab Start en klik je in de groep Cellen op Opmaak. Bij Weergeven en verbergen kies je dan Blad zichtbaar maken en klik je op het verborgen werkblad.
Ik kan in Excel een datum en tijd invoegen door in een cel =vandaag of =nu() in te tikken, zodat ik in die cel bij het openen van het document telkens de actuele tijd zie. Hoe kan ik echter in een cel zien wanneer de laatste wijziging aan het document werd doorgevoerd? Idealiter zou ik dat ook nog eens voor ieder werkblad apart (in hetzelfde document) willen zien. De tijd zou echter niet mogen wijzigen als er op dat werkblad geen aanpassingen werden doorgevoerd.
Guido Eerlings
Dat kan inderdaad, en wel met behulp van een paar regeltjes VBA-code (Visual Basic for Applications), een programmeertaal die bedoeld is om toepassingen – zoals die in Microsoft Office – te automatiseren of met nieuwe functies uit te breiden. Een cursus VBA kunnen we je hier niet aanbieden, maar als je de volgende instructies nauwgezet uitvoert, kom je er ook wel.
Maak bij wijze van experiment een nieuwe werkmap in Excel; wij nemen Excel 2007 als voorbeeld. Je zult merken dat Excel standaard al drie werkbladen heeft (zie de tabs Blad1, Blad2 en Blad3 onderaan links), en dat is prima voor ons experimentje.
Klik met de rechtermuisknop op de tab Blad3 en kies Naam wijzigen. Geef het blad de naam Registratie mee. Klik nu met de rechtermuisknop op de tab Blad1 en selecteer Programmacode weergeven. In het venster Blad1 (Code) voer je exact de volgende code in:
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("Registratie").Range("A1") = Now
End Sub
(Merk op dat de naam van je tab ook in deze code voorkomt!)
Open in het venster van Microsoft Visual Basic nu het menu Bestand en kies Sluiten en terugkeren naar Microsoft Excel. Herhaal deze procedure voor tab Blad2 (vervang “A1” in deze code echter door “A3”).
Open nu Blad1 en wijzig een of meer cellen op willekeurige wijze. Wacht een paar minuten en wijzig ook iets op Blad2. Je merkt: de tijd van deze wijzigingen werd netjes geregistreerd op het werkblad Registratie: in cel A1 vind je de tijd terug waarop werkblad 1 het laatst werd aangepast en in cel A3 de tijd van de laatste wijziging op werkblad 2.
Krijg je alleen ######## in de cellen A1/A3 te zien, dan moet je die A-kolom gewoon wat verbreden. Je zult je werkmap wel moeten opslaan in een bestandstype dat met macro’s overweg kan: kies Opslaan als en in het gelijknamige veld selecteer je vervolgens Excel-werkmap met macro’s (*.XLSM).
Afhankelijk van de ingestelde opties krijg je bij het openen wellicht ook nog een waarschuwing dat de macro’s zijn uitgeschakeld. Via de knop Opties kan je die alsnog activeren, of je geeft vanuit het Vertrouwenscentrum in Excel aan dat je alle macro’s wil inschakelen (wat uiteraard minder veilig is).
Nog dit: als je dat verkiest, kun je het Registratie-werkblad standaard verbergen: klik de tab met de rechtermuisknop aan en kies Verbergen. Om het weer op te diepen, open je in het lint de tab Start en klik je in de groep Cellen op Opmaak. Bij Weergeven en verbergen kies je dan Blad zichtbaar maken en klik je op het verborgen werkblad.