我想测试一下我制作的Excel VBA应用程序 然而,VBA代码在细胞的可见性方面变得混乱,这在编辑工作表时是一种害虫。
是否有选项可以在不必
的情况下即时启用和禁用宏Close the sheet
Change the macro settings
Reopen the sheet
Close the sheet
Change the macro settings.
etc.
答案 0 :(得分:10)
据我所知,您无法动态启用/禁用已打开的工作簿中的宏。
但是,您不应该这样做,因为只有用户点击才能触发宏。
我将看到的唯一案例是事件程序(Worksheet_Change
或其他)
然后,您可以创建激活/停用事件的程序,并通过作业簿中的按钮调用它们:
Sub enableEvents()
Application.EnableEvents = True
End Sub
Sub disableEvents()
Application.EnableEvents = False
End Sub
您还可以使用您根据需要更改的全局变量从Chris Pearson website尝试这些提示:
Public AbortChangeEvent As Boolean
然后检查是否:
Private Sub Worksheet_Change(ByVal Target As Range)
If AbortChangeEvent = True Then
Exit Sub
End If
'
' rest of code here
'
End Sub
答案 1 :(得分:4)
当您打开文档以禁用宏时,您也可以按住 SHIFT 。
答案 2 :(得分:2)
要动态禁用宏,请通过VBA编辑器中的立即窗口使用“Application.EnableEvents = False”(以及“Application.EnableEvents = True”将其重新打开)。
答案 3 :(得分:1)
从Excel 2010 *开始,“开发人员”选项卡上实际上有一个选项,允许您像ABC一样简单地禁用宏。 Design Mode lets you do just that!
*甚至可能是早期版本。
答案 4 :(得分:1)
我经常在打开工作簿时触发宏,但有时我不希望宏触发,因此我可以处理代码。因此,我将宏放在单独的工作簿中,该工作簿执行以下操作:
Sub OpenClose()
'Opens Workbook below with Macors disabled
'After it is open Macros are enabled
'This Workbook then closes without saving changes, leaving only the workbook below open
'************************************************************
'User only needs to change the workbook name on the next line
WorkbookToOpenNoMacros = "Gaby.xlsm"
'************************************************************
Dim wb As Workbook
Set wb = Application.ThisWorkbook
Application.EnableEvents = False
Application.Workbooks.Open (ActiveWorkbook.Path & "\" & WorkbookToOpenNoMacros)
Application.EnableEvents = True
wb.Saved = True
wb.Close SaveChanges:=False
End Sub
答案 5 :(得分:0)
我有Office 2013,我在VBA窗口找到了一个按钮,非常容易为我做这件事。
工具栏上有播放,暂停和停止按钮。在Excel中,它们实际上被称为“运行宏,中断和重置”。
单击“中断”按钮(暂停),任何正在运行的宏都应该停止运行。我只在一个宏上测试过它,但似乎有理由认为这一般会起作用。
另外,我相信这些按钮适用于许多版本的Excel,因此值得检查早期版本。