Excel VBA-如何用一次按键停止sub,然后用另一次按键再次继续
我当前在Sheet对象中有一个子对象,它根据所选的单元格请求输入一个数字,或者自动引用不同的工作簿并从中粘贴一个值。假设输入了一个错误的号码。我正在尝试创建另一个进程或子进程,允许用户选择要编辑的单元格,而无需通过按一个键(比如esc键)来“暂停”另一个子进程而弹出自动提示或数字。修改完成后,用户应能通过再次按同一个键来恢复“自动子进程” 我查看了keypress和keydown活动,但我只看到一次有效的方法Excel VBA-如何用一次按键停止sub,然后用另一次按键再次继续,excel,vba,Excel,Vba,我当前在Sheet对象中有一个子对象,它根据所选的单元格请求输入一个数字,或者自动引用不同的工作簿并从中粘贴一个值。假设输入了一个错误的号码。我正在尝试创建另一个进程或子进程,允许用户选择要编辑的单元格,而无需通过按一个键(比如esc键)来“暂停”另一个子进程而弹出自动提示或数字。修改完成后,用户应能通过再次按同一个键来恢复“自动子进程” 我查看了keypress和keydown活动,但我只看到一次有效的方法 'some pseudocode to explain my method 'Work
'some pseudocode to explain my method
'Working code that prompts or gets values depending on which cell is being selected
Public Sub Worksheet_SelectionChange(ByVal Target As Range)
...
End Sub
'Sub to allow for previous sub to paused/resumed
Sub
'if esc is clicked, pause the selectionChange sub.
'if esc is clicked again, resume the selctionChange sub.
End Sub
您可以设置切换开关来打开和关闭功能。 可以通过单独的宏调用调用切换 例如: 在工作表Codebehind中:
Option Explicit
Private Type TSheet1
autoEditOn As Boolean 'toggle
End Type
Private this As TSheet1
Public Property Get autoEditOn() As Boolean
autoEditOn = this.autoEditOn
End Property
Public Property Let autoEditOn(value As Boolean)
this.autoEditOn = value
End Property
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If autoEditOn Then doStuff ' only tun if toggle is true
End Sub
Private Sub doStuff()
'Do something ' do stuff in a seperate sub/function, keeps the code clean
End Sub
在名为MacroHook的单独模块中:
Option Explicit
Public Sub toggleAutoEdit() '<-- Call this function with a key-combo
With Sheet1
.autoEditOn = Not .autoEditOn
End With
End Sub
选项显式
公共子TogleAutoEdit()