How to Automatically Rotate an Excel Maintenance Cycle from 1 to 8 Using VBA
Question details
The user needs a method to automatically advance a maintenance cycle number sequentially from 1 through 8, and then restart at 1, whenever a specific service date cell is modified.
- Product
- Excel
- Device & OS
- not provided
- Scenario
- Tracking a recurring maintenance schedule where the cycle number updates dynamically based on changes to the service date.
- Observed behavior
- The cycle requires an automated loop to increment the value without manual intervention upon each date entry.
Ensure you are using the desktop version of Excel and have your file saved as a Macro-Enabled Workbook (.xlsm). You will also need to enable Developer tools and Macros in your Trust Center settings to write and run VBA code.
Implement a Worksheet_Change Event Macro
Use Excel's built-in Worksheet_Change VBA event to monitor the service date cell and automatically calculate the next cycle number.
The Worksheet_Change event triggers automatically whenever a user alters the value of a cell. By targeting the specific service date cell, you can execute a script that checks the current cycle number and increments it.
It is critical to temporarily disable application events while the macro updates the cycle number. Failing to do so will cause the macro to trigger itself in an infinite recursive loop.
Press Alt + F11 on your keyboard to open the Visual Basic for Applications (VBA) editor.
In the Project Explorer panel on the left, find your workbook and double-click the specific worksheet (e.g., Sheet1) where the maintenance schedule is located.
At the top of the code window, select 'Worksheet' from the left dropdown menu and 'Change' from the right dropdown menu. This creates a Private Sub Worksheet_Change(ByVal Target As Range) block.
Inside the subroutine, write an If statement to verify that Target.Address matches your service date cell. Then, use Application.EnableEvents = False before adding the logic to increment the cycle cell (e.g., If CycleCell.Value < 8 Then CycleCell.Value = CycleCell.Value + 1 Else CycleCell.Value = 1).
Immediately after the cycle cell is updated in the code, add Application.EnableEvents = True to restore normal Excel functionality, then close the VBA editor and test the date change.
Manage Advanced Spreadsheets and Macros with WPS Office
WPS Spreadsheets provides comprehensive support for complex data management and VBA macros, allowing you to run automated maintenance cycles just as easily as in Microsoft Excel.
- 1. Open Your Maintenance Schedule: Launch WPS Spreadsheets and open your .xlsm maintenance workbook.
- 2. Access Developer Tools: Navigate to the Developer tab on the top ribbon and click the 'VBA Editor' icon.
- 3. Input Your Automation Code: Paste your Worksheet_Change event logic into the specific sheet module.
- 4. Save and Execute: Save your file and update the service date to instantly see the cycle number advance.

Frequently Asked Questions
Why did my Excel freeze when the macro updated the cycle number?
This happens when a Worksheet_Change macro alters a cell without disabling events first. The cell change triggers the macro again, creating an infinite loop. Always place 'Application.EnableEvents = False' before the cell update and 'Application.EnableEvents = True' immediately after.
Why isn't my Worksheet_Change macro running at all?
Macros might be disabled in your Trust Center settings, or you may have placed the code in a standard Module instead of the specific Sheet module. Alternatively, 'Application.EnableEvents' might be stuck on False from a previous error; you can reset it by typing 'Application.EnableEvents = True' in the VBA Immediate Window.
Can I use standard formulas instead of VBA for this cycle?
Standard formulas calculate based on current cell values and cannot 'remember' previous states to increment them without using circular references and iterative calculation, which are highly prone to errors. VBA is the proper tool for triggering permanent, incremental changes based on a specific action.
How do I save a workbook that contains this macro?
You must go to File > Save As and select 'Excel Macro-Enabled Workbook (*.xlsm)'. If you save it as a standard .xlsx file, Excel will strip the VBA code from the document permanently.




