Bill有一个“保存之前”宏,用于测试三个单元格。如果单元格为空,则宏将阻止用户保存。换句话说,要求他们先填写单元格,然后才能保存工作簿。

Bill希望将此工作簿另存为模板,但是当他清除这三个单元格时,宏也使他无法另存为模板。他希望模板是“干净的”,三个单元格默认为空。用户将基于模板创建一个新的工作簿,然后(正确)无法保存,除非填写了单元格。 Bill想知道如何在三个单元格都为空的情况下将工作簿另存为模板。

实际上,您可以采用多种不同的方法来保存模板。

第一种是将工作簿的名称更改为相当深奥的名称,例如X27TT3W.xlsm。然后,向您的“保存前”宏添加一些逻辑,以检查基本工作簿的名称是否为X27TT3W。如果是这样,则不管三个单元格的状况如何,都允许保存工作簿(或模板)。保存模板后,您可以在Windows中将其重命名为所需的名称,并且可以与您的用户共享。除非他们猜出您选择的神秘名称,否则他们将无法保存工作簿,除非确保三个单元格都已填写。

另一种方法是简单地向工作簿添加另一个事件处理程序(该事件处理程序在您首次打开工作簿时执行),以清除三个单元格的内容。这可能很简单,例如:

该宏清除A1:A3处的单元格。如果要清除其他范围,只需更改三行即可反映要清除的单元格。然后,在三个单元格中放置一些内容(以便它通过“保存前”宏中的测试),并将其保存为模板。

Private Sub Workbook_Open()

Sheet1.Cells(1,1).Clear     Sheet1.Cells(2,1).Clear     Sheet1.Cells(3,1).Clear End Sub

另一种非常容易实现的方法是在保存模板之前简单地禁用事件。这不是在宏中完成的,而是在Visual Basic编辑器的“立即”窗口中完成的。您需要做的就是输入以下单行:

立即将您的工作簿另存为模板,然后在Visual Basic编辑器的“立即”窗口中输入以下行:

Application.EnableEvents = False

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

Application.EnableEvents = True

本技巧(13547)适用于Microsoft Excel 2007、2013、2016、2019和Office 365中的Excel。