by Allen Wyatt
(last updated July 7, 2018)
Bill has a "before save" macro that tests three cells. If the cells are empty, then the macro stops the user from saving. In other words, they are required to fill in the cells before they can save the workbook. Bill would like to save this workbook as a template, but when he clears the three cells, the macro also stops him from saving as a template. He would like the template to be "clean," with a default of the three cells being empty. Users would create a new workbook based on the template and then (correctly) not be able to save unless the cells are filled in. Bill wonders how he can save the workbook as a template, with the three cells empty.
There are actually a number of different approaches you could take to save your template.
The first is to change the name of your workbook to something rather esoteric, such as X27TT3W.xlsm. Then, add some logic to your "before save" macro that checks to see if the name of the base workbook is X27TT3W. If it is, then allow the workbook (or template) to be saved regardless of the condition of the three cells. Once the template is saved, you can then rename it in Windows to your desired name, and it can be shared with your users. Unless they guess the esoteric name you chose, they won't be able to save the workbook without making sure the three cells are filled in.
Another approach is to simply add another event handler to your workbook—this one that executes when you first open the workbook—to clear the contents of the three cells. This could be something simple, like this:
Private Sub Workbook_Open() Sheet1.Cells(1,1).Clear Sheet1.Cells(2,1).Clear Sheet1.Cells(3,1).Clear End Sub
This macro clears the cells at A1:A3. If you want to have it clear a different range, just change the three lines to reflect which cells you want to clear. Then, put something in the three cells (so that it passes your testing in the "before save" macro), and save it as a template.
Another approach that is very easy to implement is to simply disable events before you save the template. This is not done within a macro, but within the Immediate window in the Visual Basic Editor. All you need to do is enter this single line:
Application.EnableEvents = False
Immediately save your workbook as a template, and then enter the following line in the Immediate window of the Visual Basic Editor:
Application.EnableEvents = True
ExcelTips is your source for cost-effective Microsoft Excel training. This tip (13547) applies to Microsoft Excel 2007, 2013, 2016, 2019, and Excel in Office 365.
Create Custom Apps with VBA! Discover how to extend the capabilities of Office 2013 (Word, Excel, PowerPoint, Outlook, and Access) with VBA programming, using it for writing macros, automating Office applications, and creating custom applications. Check out Mastering VBA for Office 2013 today!
If you have a series of values in a column, you might have a need to separate the values into even values and odd values. ...Discover More
There are a variety of ways that you might want to count the cells in your worksheet. One way is to figure out how many ...Discover More
Need to click on a cell and have it replaced with an "X"? Macros make it easy to do, as illustrated in this tip.Discover More
FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
Got a version of Excel that uses the ribbon interface (Excel 2007 or later)? This site is for you! If you use an earlier version of Excel, visit our ExcelTips site focusing on the menu interface.