删除宏中的工作表(Microsoft Excel)
只要您知道正确的VBA命令即可完成手头的任务,大多数Excel命令都可在宏中使用。您可以使用以下宏命令删除活动的工作表:
ActiveSheet.Delete
如果在宏中发出命令,则会发现Excel暂停了该宏并询问您是否确定要删除工作表。
当您单击是时,工作表将被删除,宏将恢复。
当然,宏背后的整个想法是使您定期执行的许多任务自动化。停止并要求确认可能是安全的方法,但是对自动化的原因没有多大帮助。如果您希望不间断地删除工作表,则可以做几件事。首先,可以使用SendKeys方法模拟按下Enter键,这与在确认对话框中单击“是”相同。您需要做的就是在删除工作表的行之前添加一行:
Application.SendKeys ("{ENTER}") ActiveSheet.Delete
SendKeys除了将按键内容填充到键盘缓冲区外什么都不做,就像您从键盘上键入它们一样。因此,SendKeys行必须在Delete行之前,以便Enter键在需要之前就在缓冲区中。
任何长期使用宏的开发人员都可以使用SendKeys指出一些潜在的问题,主要的问题是您不能使用它来指定您只接受确认对话框中的“是”选项,并且只能在该对话框中接受。但是不太可能,如果在正确的时间弹出其他对话框(也许是由其他程序生成的对话框),则Enter键将应用于该对话框,而不是您期望的对话框。
更好的解决方案是在短时间内关闭Excel的警报功能。考虑下面的宏代码:
Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True
此代码关闭警报,删除工作表,然后重新打开警报。当它们关闭时,Excel将不会显示确认对话框,但会像已显示并已选择默认选项(是)一样起作用。
记住这里显示的最后一行代码很重要。如果您没有将DisplayAlerts属性设置回True,那么即使宏结束后,Excel也不会再显示任何警报消息。如您所想,这可能会导致问题。最好仅在需要关闭警报的短时间内将其设置为False。
即使将DisplayAlerts设置为False,如果仍然生成错误消息,您仍然会看到错误消息。例如,如果您执行上述代码,并且工作簿中只有一个工作表,您仍然会看到错误消息。 (发生这种情况是因为您不能删除工作簿中的最后一个工作表。)
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(2293)适用于Microsoft Excel 97、2000、2002和2003。