Excel 如何在宏已经运行或特定单元格中有值时停止宏
我正在使用Excel模板(.xlt)上的Auto_Open来运行一个宏,该宏将一些数据导入到速度表,添加一些forula,然后创建一些透视表和图表。其结果是一份最终报告,该报告可保存为.xls 我在Auto_Open sub的顶部添加了以下IF语句,以检查单元格A2是否包含“服务活动报告”(这是来自A2:N2的合并单元格),以及是否包含,以退出宏。这样,宏在生成报告后不会再次运行Excel 如何在宏已经运行或特定单元格中有值时停止宏,excel,excel-2007,excel-2003,vba,Excel,Excel 2007,Excel 2003,Vba,我正在使用Excel模板(.xlt)上的Auto_Open来运行一个宏,该宏将一些数据导入到速度表,添加一些forula,然后创建一些透视表和图表。其结果是一份最终报告,该报告可保存为.xls 我在Auto_Open sub的顶部添加了以下IF语句,以检查单元格A2是否包含“服务活动报告”(这是来自A2:N2的合并单元格),以及是否包含,以退出宏。这样,宏在生成报告后不会再次运行 If ActiveSheet.Range("A2").Text = "Service Activity Report
If ActiveSheet.Range("A2").Text = "Service Activity Report" Then
Exit Sub
Else
两个问题:
这是第二次停止宏运行并覆盖最终报告的最佳方法吗
由于图表的性质,宏只能在Excel2007中工作,但在Excel2003中跳过了上面的代码
有什么想法吗
ActiveSheet
是指Excel模板还是最终报告?如果这个单元格是为最终报告创建的,并且只是检查它是否存在,从而表明最终报告已经完成,那么我不一定要更改它。这可能不是完成该任务的“最佳”方式,但在使用VBA和Office时,通常很难找到“最佳”方式来完成棘手的事情Auto_Open
,所以我不能说它在Excel2003中是否可用。但是,我以前使用过Workbook\u Open()
在工作簿启动时运行代码。如果在Visual Basic资源管理器窗口中导航到此工作簿
,则应该能够看到该方法。在右侧窗口中,将(常规)更改为工作簿,现在应该可以看到Workbook\u Open()
方法这里没有专家,但是
欢呼!
你也可以考虑比“Active SeeGET”更具体一些,以防工作簿被另一个活动表保存。你可以给A2一个名字,比如说“RePress标题”——这意味着什么表是活动的:< /P>If Range("ReportTitle").Text = "Service Activity Report" Then
Exit Sub
Else
' Code to do whatever you are doing...
End if
如果你的测试是真的,你实际上什么都不想做,如果是假的,你可能想考虑:
If Not (Range("ReportTitle").Text = "Service Activity Report") Then
' Code to do whatever you are doing...
End if
如果不需要每次打开文件时都执行代码,为什么要使用Auto\u Open宏?谢谢,Auto\u Open函数在2003年确实可以工作,尽管它似乎忽略了检查单元格是否已填充。我将尝试工作簿\u Open()。太好了,我也将尝试一下。