KutoolsforOffice — Eén oplossing, vijf krachtige tools.Meer bereiken met minder moeite.

Hoe kunt u de vorige waarde van een gewijzigde cel in Excel vastleggen of opslaan?

AuteurSiluvia Wijzigingsdatum

Wanneer u een cel in Excel bewerkt, wordt de oorspronkelijke waarde direct overschreven en is deze niet langer zichtbaar—tenzij u de actie ongedaan maakt. Als u die eerdere waarde wilt behouden voor vergelijking, auditing of eventueel terugdraaien, kunt u deze automatisch vastleggen met een korte VBA-routine die de vorige waarde naar een hulpkolom schrijft vóór elke wijziging. U kunt ook gebruikmaken van de ingebouwde Microsoft 365-tools, zoals ‘Wijzigingen weergeven’ en Versiegeschiedenis, mits het bestand is opgeslagen in OneDrive of SharePoint. Deze handleiding behandelt beide methoden, zodat u de optie kunt kiezen die het beste aansluit bij uw workflow en governancebehoeften.


Vorige celwaarde opslaan met VBA-code in Excel

Stel dat u een tabel hebt zoals in de onderstaande afbeelding. Wanneer een cel in kolom C wordt bewerkt, wilt u mogelijk de vorige waarde vastleggen in de overeenkomstige cel van kolom G, of de oude waarde automatisch toevoegen als Opmerking ter referentie en toekomstige controle. Deze aanpak is vooral nuttig wanneer u een actief logboek wilt bijhouden of terug wilt kunnen verwijzen naar oude waarden tijdens doorlopende gegevensinvoer of kwaliteitscontroles.

Een schermafbeelding van een Excel-tabel met de doelkolom voor het opslaan van eerdere celwaarden

Belangrijk scenario: Voor werkbladen waarin u regelmatig wijzigingen controleert of afstemt, zoals inventarisaties, logboeken of financiële registraties, bespaart het zichtbaar houden van eerdere waarden tijd en minimaliseert het onbedoeld gegevensverlies.

Open het werkblad waarop u eerdere waarden wilt vastleggen en volg daarna deze stappen:

1. Klik met de rechtermuisknop op het bladtabblad en kies 'Code weergeven' in het snelmenu om direct de Visual Basic for Applications (VBA)-editor te openen. Zie afbeelding:

Een schermafbeelding van de optie Code weergeven in het rechtermuisknopmenu van het werkbladtabblad in Excel

2. Plak in het venster 'Microsoft Visual Basic for Applications' de volgende VBA-code in het codovenster. Deze macro bewaart automatisch de vorige waarde van cellen in de doelkolom in een andere kolom.

Pas vóór het uitvoeren van dit script de doelkolomverwijzingen in de code aan. In deze voorbeelden verwijst „C:C" naar de kolom waarvan wijzigingen worden bijgehouden, en komt het getal "7" overeen met kolom G, waar eerdere waarden worden opgeslagen. U kunt deze verwijzingen eenvoudig aanpassen aan uw eigen lay-out.

VBA-code: Vorige celwaarde opslaan in een andere kolomcel

Dim xRg As Range
Dim xChangeRg As Range
Dim xDependRg As Range
Dim xDic As New Dictionary
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim I As Long
    Dim xCell As Range
    Dim xDCell As Range
    Dim xHeader As String
    Dim xCommText As String
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    xHeader = "Previous value :"
    x = xDic.Keys
    For I = 0 To UBound(xDic.Keys)
        Set xCell = Range(xDic.Keys(I))
        Set xDCell = Cells(xCell.Row, 7)
        xDCell.Value = ""
        xDCell.Value = xDic.Items(I)
    Next
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim I, J As Long
    Dim xRgArea As Range
    On Error GoTo Label1
    If Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False
    Set xDependRg = Target.Dependents
    If xDependRg Is Nothing Then GoTo Label1
    If Not xDependRg Is Nothing Then
        Set xDependRg = Intersect(xDependRg, Range("C:C"))
    End If
Label1:
    Set xRg = Intersect(Target, Range("C:C"))
    If (Not xRg Is Nothing) And (Not xDependRg Is Nothing) Then
        Set xChangeRg = Union(xRg, xDependRg)
    ElseIf (xRg Is Nothing) And (Not xDependRg Is Nothing) Then
        Set xChangeRg = xDependRg
    ElseIf (Not xRg Is Nothing) And (xDependRg Is Nothing) Then
        Set xChangeRg = xRg
    Else
        Application.EnableEvents = True
        Exit Sub
    End If
    xDic.RemoveAll
    For I = 1 To xChangeRg.Areas.Count
        Set xRgArea = xChangeRg.Areas(I)
        For J = 1 To xRgArea.Count
            xDic.Add xRgArea(J).Address, xRgArea(J).Formula
        Next
    Next
    Set xChangeRg = Nothing
    Set xRg = Nothing
    Set xDependRg = Nothing
    Application.EnableEvents = True
End Sub

Voor situaties waarin het beter is om de vorige waarde op te slaan als een Opmerking—handig voor snel inzien en annoteren—doet de volgende VBA-code dit automatisch telkens wanneer een cel in de doelkolom wordt gewijzigd:

VBA-code: Vorige celwaarde opslaan in de opmerking

Dim xRg As Range
Dim xChangeRg As Range
Dim xDependRg As Range
Dim xDic As New Dictionary
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim I As Long
    Dim xCell As Range
    Dim xHeader As String
    Dim xCommText As String
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    xHeader = "Previous value :"
    For I = 0 To UBound(xDic.Keys)
        Set xCell = Range(xDic.Keys(I))
        If Not xCell.Comment Is Nothing Then xCell.Comment.Delete
        With xCell
            .AddComment
            .Comment.Visible = False
            .Comment.Text xHeader & vbCrLf & xDic.Items(I)
        End With
    Next
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim I, J As Long
    Dim xRgArea As Range
    On Error GoTo Label1
    If Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False
    Set xDependRg = Target.Dependents
    If xDependRg Is Nothing Then GoTo Label1
    If Not xDependRg Is Nothing Then
        Set xDependRg = Intersect(xDependRg, Range("C:C"))
    End If
Label1:
    Set xRg = Intersect(Target, Range("C:C"))
    If (Not xRg Is Nothing) And (Not xDependRg Is Nothing) Then
        Set xChangeRg = Union(xRg, xDependRg)
    ElseIf (xRg Is Nothing) And (Not xDependRg Is Nothing) Then
        Set xChangeRg = xDependRg
    ElseIf (Not xRg Is Nothing) And (xDependRg Is Nothing) Then
        Set xChangeRg = xRg
    Else
        Application.EnableEvents = True
        Exit Sub
    End If
    xDic.RemoveAll
    For I = 1 To xChangeRg.Areas.Count
        Set xRgArea = xChangeRg.Areas(I)
        For J = 1 To xRgArea.Count
            xDic.Add xRgArea(J).Address, xRgArea(J).Text
        Next
    Next
    Set xChangeRg = Nothing
    Set xRg = Nothing
    Set xDependRg = Nothing
    Application.EnableEvents = True
End Sub

Parameteropmerkingen:

  • Het getal 7 in Cells(xCell.Row,7) verwijst naar kolom G. Pas deze waarde aan als u de vorige waarde in een andere kolom wilt opslaan.
  • Range("C:C")bepaalt van welke kolom de wijzigingen worden bijgehouden. Pas dit aan indien nodig, bijvoorbeeld naar „D:D" voor kolom D.

3. Schakel woordenboekondersteuning voor het script in via Extra > Referenties... in de VBA-editor. Selecteer in het dialoogvenster Referenties – VBAProject de optie Microsoft Scripting Runtime en klik op OK, zoals hieronder wordt getoond:

Een schermafbeelding van het dialoogvenster Referenties met Microsoft Scripting Runtime geselecteerd

4. Druk op 'Alt' + 'Q' om de VBA-editor te sluiten en terug te keren naar uw werkblad.

Vanaf nu kopieert Excel automatisch de vorige waarde van een cel in kolom C naar kolom G of voegt deze toe aan de opmerking van de cel zodra deze wordt gewijzigd. Zo houdt u wijzigingen eenvoudig bij en valideert u ze, terwijl historische gegevens blijven toegankelijk voor controle, auditing of foutcorrectie.

Voorbeelduitvoer voor het opslaan van vorige celwaarden in andere cellen:

Een schermafbeelding waarop eerdere celwaarden zijn opgeslagen in een andere kolom in Excel

Voorbeelduitvoer voor het opslaan van vorige celwaarden in opmerkingen:

Een schermafbeelding waarop eerdere celwaarden zijn opgeslagen als opmerkingen in Excel

Tips & probleemoplossing:

  • Als de VBA-macro’s niet naar verwachting werken, controleer dan de macrobeveiligingsinstellingen via Bestand > Opties > Vertrouwenscentrum > Macro-instellingen en stel deze in op ‘Alle macro’s inschakelen’.
  • Controleer uw kolomverwijzingen als waarden niet op de juiste locatie worden vastgelegd.
  • Als fouten blijven optreden, zorg er dan voor dat de bibliotheek ‘Microsoft Scripting Runtime’ correct is ingeschakeld, zoals hierboven beschreven.

Microsoft 365 — Controleer vorige en bijgewerkte celwaarden met Wijzigingen weergevenen Versiegeschiedenis

In Microsoft 365 kunt u bewerkingen eenvoudig controleren — wie wat heeft gewijzigd en wanneer, inclusief de waarden vóór en na de wijziging — zonder de oude functie voor het bijhouden van wijzigingen. Gebruik Wijzigingen weergeven voor gedetailleerde informatie op celniveau en Versiegeschiedenis voor volledige bestandssnapshots en herstelopties.

Vereisten

  • Werkmap opgeslagen naar OneDrive of SharePoint.
  • Ingelogd met een Microsoft 365-account; AutoSave staat Aan.
  • Modern formaat ().xlsx); geen gebruik van het oude Gedeeld werkblad (oud).

Wijzigingen weergeven (audit op celniveau)

1. Open de in de cloud opgeslagen werkmap en ga naar Controleren ▸ Wijzigingen weergeven om het deelvenster te openen.
2. (Optioneel) Selecteer eerst een werkblad of bereik om de resultaten te beperken.
3. Blader door de items om redacteur, tijdstempel en oud → nieuw waarden te zien; klik op een item om direct naar de cel te springen.

Versiegeschiedenis (vergelijken en herstellen)

1. Ga naar Bestand ▸ Info ▸ Versiegeschiedenis.
2. Open een eerdere versie om te vergelijken; kopieer cellen of klik op Herstellen om het hele bestand terug te draaien.

  • Is 'Wijzigingen weergeven' uitgegrijsd?Sla op naar OneDrive/SharePoint, schakel AutoSave in, converteer vanuit Compatibiliteitsmodus ()Bestand ▸ Info ▸ Converteren) en zorg ervoor dat Gedeeld werkblad (oud) is uitgeschakeld. Probeer Excel voor het web als de desktopversie blijft vastzitten.
  • Beveiliging/sloten: Werkmap- of werkbladbeveiliging, codering of IRM kan de functie 'Wijzigingen weergeven' uitschakelen.
  • Lokale bestanden: Voor louter lokale bestanden wordt geen volledige geschiedenis bijgehouden; gebruik Versiegeschiedenis via de cloud voor optimale resultaten.
  • Moet u waarden in cellen vastleggen? ‘Wijzigingen weergeven’ en Versiegeschiedenis zijn audittools; om bij elke bewerking de „vorige waarde” in een hulpkolom vast te leggen, gebruikt u een kleine Worksheet_Change-VBA-logger.

Voordelen

  • Automatische audit van wie en wanneer, inclusief voorafgaande en latere waarden – geen macro’s nodig.
  • Platformonafhankelijk (Windows, Mac, web) wanneer opgeslagen in OneDrive of SharePoint.

Nadelen

  • Vereist cloudopslag en AutoSave; beperkte details beschikbaar voor sommige tijdelijke bewerkingen.
  • Vult geen vorige waarden automatisch in cellen in; gebruik VBA als dit vereist is voor uw bedrijfslogica.

Beste Office-productiviteitshulpmiddelen

🤖KUTOOLS AI Assistant: Revolutioneer Data-analyse op basis van:Intelligente uitvoering   |  Genereer code|  Maak aangepaste formules  |  Analyseer gegevens en genereer grafieken|  Roep Verbeterde functies aan
Populaire functies:Zoeken, markeren of Dubbele waarden markeren   |  Verwijder lege rijen   |  Kolommen samenvoegen of cellen zonder gegevensverlies   |   Afronden zonder formule...
Super ZOEKEN:VLookup met meerdere criteria  |  VLookup met meerdere waarden  |   VLookup over meerdere werkbladen   |   Fuzzy Match....
Geavanceerde keuzelijst:Snel een keuzelijst maken   |  Afhankelijke keuzelijst   |  Keuzelijst met meervoudige selectie....
Kolombeheerder:Voeg een specifiek aantal kolommen toe|Verplaats kolommen|Wissel zichtbaarheidsstatus van verborgen kolommen|Vergelijk bereiken en kolommen...
Uitgelichte functies:Rasterfocus   |  Ontwerpweergave   |Verbeterde formulebalk   | Werkmap- en bladbeheerder   |  Bronnenbibliotheek(Automatische tekst)|  Datumkiezer   |  Werkbladen samenvoegen  |  Versleutelen/Cellen decoderen   | E-mails verzenden op basis van lijst   |  Superfilter   |   Speciaal filter(Filter cellen met vetgedrukt lettertype/cursief/doorgestreept...) ...
Top 15 gereedschapssets:12 Teksthulpmiddelen(Tekst toevoegen,Specifieke tekens verwijderen, ...)|   50+Grafiektypen(Gantt-diagram, ...)|   40+ Praktische formules(Leeftijd berekenen op basis van geboortedatum, ...)|   19 Invoeghulpmiddelen(QR-code Invoegen,Afbeelding invoegen vanaf pad, ...)|   12 Conversiehulpmiddelen(Omzetten naar woorden,Wisselkoersconversie, ...)|   7 Samenvoegen en splitsenhulpmiddelen(Geavanceerd samenvoegen van rijen,Cellen splitsen, ...)|... en meer
Gebruik Kutools in uw voorkeurstaal – ondersteunt Engels, Spaans, Duits, Frans, Chinees en 40+ andere talen!

Geef uw Excel-vaardigheden een boost met Kutools voor Excel en ervaar efficiëntie zoals nooit tevoren.Kutools voor Excel biedt meer dan 300 geavanceerde functies om de productiviteit te verhogen en Tijd besparen.Klik hier om de functie te krijgen die u het meest nodig heeft...


Office Tab brengt een tabbladinterface naar Office en maakt uw werk veel eenvoudiger

  • Schakel tabbladbewerking en -lezen in voor Word, Excel, PowerPoint, Publisher, Access, Visio en Project.
  • Open en maak meerdere documenten aan in nieuwe tabbladen binnen hetzelfde venster, in plaats van in afzonderlijke vensters.
  • Verhoogt uw productiviteit met 50 % en bespaart u dagelijks honderden muisklikken!

Alle Kutools-add-ins in één installatieprogramma.

Kutools for Office bundelt add-ins voor Excel, Word, Outlook en PowerPoint, plus Office Tab Pro—ideaal voor teams die met meerdere Office-apps werken.

ExcelWordOutlookTabsPowerPoint
  • Alles-in-één suite— add-ins voor Excel, Word, Outlook & PowerPoint plus Office Tab Pro
  • Één installatieprogramma, één licentie— binnen enkele minuten klaar (MSI-geschikt)
  • Werkt beter samen— gestroomlijnde productiviteit in alle Office-apps
  • 30 dagen volledig functionele proefversie— geen registratie, geen creditcard
  • Beste prijs-kwaliteitverhouding— bespaar ten opzichte van het afzonderlijk kopen van add-ins