How to Stop Excel VBA Screen Flickering During Macro Execution
Question details
The user wants to eliminate screen flickering in Excel while running a VBA macro, as standard screen updating commands are not fully preventing the issue.

- Product
- Microsoft Excel
- Device & OS
- not provided
- Scenario
- Executing a long or complex VBA macro where the screen still updates visibly, particularly near the end of the script or during progress tracking.
- Observed behavior
- The Excel interface flickers or flashes during macro execution because of background calculations, event triggers, or the use of specific UI-updating VBA commands.
Ensure you have saved a backup of your current workbook and VBA code before making structural changes to your macros.
Optimize VBA Code to Prevent Screen Flickering
Refactoring your VBA code to avoid direct selections and properly structure screen updating commands is the most effective way to eliminate flickering.
Although setting Application.ScreenUpdating to False is the standard method to pause screen refreshes, relying on .Select or .Activate commands forces Excel to update the user interface anyway. Direct referencing is highly recommended to keep the background processing hidden.
Press ALT + F11 to open the Microsoft Visual Basic for Applications window, then locate your macro module.
Ensure Application.ScreenUpdating = False is placed at the very beginning of your procedure, and Application.ScreenUpdating = True is at the very end.
Search for any .Select or .Activate methods in your code. Replace them with direct workbook and worksheet references.
Group your object modifications using With blocks to apply changes directly. For example: With ThisWorkbook.Worksheets("Data") .Range("A1").Interior.PatternColorIndex = xlAutomatic End With.
Temporarily disable automatic calculations and events during execution by adding Application.Calculation = xlCalculationManual and Application.EnableEvents = False at the start, restoring them at the end.

Troubleshoot End-of-Macro Screen Flickering
If the macro runs smoothly but flickers for the last few seconds, background events or calculation triggers are likely responsible.
Try WPS Office for a Seamless Spreadsheet Experience
If you frequently encounter performance issues, lag, or macro limitations in Microsoft Excel, consider switching to WPS Office. It provides a lightweight, highly compatible alternative for managing complex spreadsheets and data analysis tasks efficiently.
- 1. Download the Installer: Visit the official WPS Office website and click the free download button for your operating system.
- 2. Install WPS Office: Run the downloaded installer and follow the quick on-screen instructions to set up the software.
- 3. Open Your Spreadsheets: Launch WPS Spreadsheet and open your existing Excel workbooks to enjoy seamless formatting and fast performance.

Frequently Asked Questions
Why does my screen still flicker when Application.ScreenUpdating is False?
Even with ScreenUpdating turned off, specific commands like .Select, .Activate, or .ScrollRow force the spreadsheet application to bypass this setting and update the visual interface. Using direct range referencing completely prevents this bypass.
How can I show macro progress without causing screen flicker?
Updating a spreadsheet cell or the Status Bar repeatedly forces UI refreshes and causes flickering. The best practice is to create a VBA UserForm to act as a progress bar, which renders smoothly over the application independently of the cell grid.
Do calculation events trigger screen flickering?
Yes, if your macro triggers automatic recalculations or workbook events (such as Worksheet_Change) while processing data, it can cause screen refreshes. You can prevent this by setting Application.Calculation to xlCalculationManual at the beginning of your code.




