How to Create an Excel VBA Audit Trail for Merged Cells
Question details
The user needs to create an Excel VBA macro that tracks worksheet changes but is encountering errors when the target range contains merged cells, wrapped text, or multiple edited cells.

- Product
- Excel
- Device & OS
- not provided
- Scenario
- Developing a Worksheet_Change event in VBA to log a history of user edits into a separate audit trail worksheet.
- Observed behavior
- Modifying a merged cell or pasting data into multiple cells triggers a Run-time error 13 (Type mismatch), which halts the execution of the audit trail script.
Before editing your VBA code, ensure you save a copy of your workbook as a Macro-Enabled Workbook (.xlsm) to prevent accidental data loss during script testing.
Update VBA Code to Handle Merged Cells and Variant Variables
Modify your Worksheet_Change event to process merged ranges correctly by evaluating the top-left cell and using Variant variables to avoid Type Mismatch errors.
When a user modifies a merged cell in Excel, the application treats the entire merged area as the target range. If your VBA script expects a single cell value (like a String or Integer), a Type Mismatch (Run-time error 13) occurs. Using Variant data types and isolating the top-left cell of the merged range resolves this issue.
In your VBA script, declare the 'OldValue' and 'NewValue' variables as 'Variant'. This allows the variables to safely accept multi-cell arrays generated by merged ranges or copy-paste actions.
Implement a 'For Each cell In Target.Cells' loop. This ensures that if a user modifies multiple cells at once, the macro processes and logs each change individually without crashing.
When retrieving data from a merged area, use 'cell.MergeArea.Cells(1, 1).Value'. Excel only stores the actual data in the upper-left cell of a merged block.
Add 'Application.EnableEvents = False' before the code block that writes data to the audit sheet. Once the logging is complete, add 'Application.EnableEvents = True' to restore normal event triggers.

Create and Manage Macros Easily with WPS Spreadsheets
WPS Office provides robust built-in support for VBA and macros. You can seamlessly run, edit, and troubleshoot your Excel audit trail scripts in a highly compatible and lightweight environment.
- 1. Access the Developer Tools: Open WPS Spreadsheets and click on the 'Developer' tab in the top ribbon.
- 2. Open the VBA Editor: Click on 'Visual Basic' or use the 'ALT + F11' shortcut to launch the macro editor.
- 3. Implement Your Audit Code: Paste your Worksheet_Change audit trail code into the corresponding sheet module and save the document as a Macro-Enabled Workbook.

Frequently Asked Questions
Why do I get 'Run-time error 13: Type mismatch' in my VBA audit trail?
This error occurs when your code tries to assign a multi-cell range (like a merged cell or pasted data) to a variable expecting a single value format (like a String). Using a Variant data type in your macro resolves this issue.
How does VBA read the value of a merged cell?
In VBA, a merged cell's value is exclusively stored in the top-left cell of that merged range. You can access it reliably in your script by calling 'MergeArea.Cells(1,1).Value'.
Why does Excel crash or freeze when my audit trail macro runs?
The macro may be triggering recursive events. When the macro logs a change to the audit sheet, it triggers another Worksheet_Change event, creating an infinite loop. Use 'Application.EnableEvents = False' before writing to prevent this.




