Fix Excel Worksheet_Change Event Not Working with Dropdowns
Question details
The user's Excel VBA Worksheet_Change event for a multiple-selection dropdown fails to trigger or run correctly, only seeming to work after the workbook is saved.

- Product
- Microsoft Excel
- Device & OS
- not provided
- Scenario
- Using a dropdown list configured with a Worksheet_Change VBA event macro to automate sheet updates.
- Observed behavior
- The VBA code does not execute upon changing the dropdown selection unless the workbook is saved, primarily caused by unintended worksheet protection blocking cell modifications.
Ensure you have saved a backup of your workbook with a macro-enabled (.xlsm) extension and verify that macros are fully enabled in your application's Trust Center settings.
Remove Unintended Worksheet Protection
The most common cause for a Worksheet_Change event failing to execute properly is that the worksheet is protected, preventing the VBA script from modifying locked cells.
When a worksheet is protected, any VBA code attempting to write data, format cells, or manipulate objects on that sheet will result in a silent failure or an error. Removing the protection allows the macro to run freely.
Open your workbook and click on the 'Review' tab in the top ribbon.
Click the 'Unprotect Sheet' button. If prompted, enter the password used to lock the sheet.
Change a value in your dropdown list to verify that the Worksheet_Change event now triggers successfully.

Update VBA Code to Manage Protection Dynamically
If the worksheet must remain protected from user edits, update your Worksheet_Change event code to temporarily unprotect the sheet while the macro runs.
Verify Application.EnableEvents is Enabled
Sometimes another macro unexpectedly crashes or halts, leaving application events disabled. This prevents the Worksheet_Change event from firing.
Manage VBA and Dropdown Lists Seamlessly in WPS Office
WPS Spreadsheet offers robust support for VBA macros and data validation dropdowns, providing a smooth environment to automate tasks, manage worksheet protection, and execute Worksheet_Change events without friction.
- 1. Open your macro-enabled workbook: Launch WPS Spreadsheet and open your .xlsm file containing the dropdown list.
- 2. Manage Worksheet Protection: Go to the 'Review' tab and click 'Unprotect Sheet' to ensure your macros have permission to modify cells.
- 3. Enable Macros: If prompted by the security warning at the top of the workspace, click 'Enable Content' to activate VBA execution.
- 4. Run your automation: Interact with your dropdown list; WPS Office will seamlessly handle the Worksheet_Change event in the background.

Frequently Asked Questions
Why does my Worksheet_Change macro only work after saving the workbook?
This usually indicates an event-handling glitch, a background calculation issue, or a memory leak in the VBA environment. Saving the workbook often forces the application to recalculate and refresh its event listeners, temporarily fixing the freeze.
Why doesn't the Worksheet_Change event fire when a cell is updated by a formula?
The Worksheet_Change event is strictly triggered by physical user input, pasting data, or an external link update. If a formula result changes based on other cells, you should use the Worksheet_Calculate event instead.
How do I make sure my VBA code is in the correct module?
Worksheet_Change is a sheet-specific event. It will not work if placed in 'Module1' or 'ThisWorkbook'. In the VBA Editor, you must double-click the specific sheet name (e.g., Sheet1) under Microsoft Excel Objects and paste the code there.
Does WPS Office support Worksheet_Change events?
Yes, WPS Spreadsheet fully supports VBA macros, including Worksheet_Change events, provided you are using a version of WPS Office with the VBA module installed and macros are enabled in your security settings.




