我目前在Sheet对象中有一个子对象,根据选择的是哪个单元格,它要求输入一个数字,或者自动引用另一个工作簿并从那里粘贴一个值。假设输入了错误的数字。我正在尝试创建另一个进程或子程序,该程序或子程序允许用户选择要编辑的单元格,而不会通过按下某个键(让您说出esc键)来“暂停”另一个子程序而弹出自动提示或数字。修改完成后,用户应该可以通过再次按下相同的键来恢复“自动子”。
我研究了按键和按键动作,但是我只看到一次有效的方法。
'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
答案 0 :(得分:1)
您可以设置一个Toggle来打开和关闭该功能。 可以通过单独的宏调用来调用该切换。
例如:
在后面的工作表代码中:
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
还有其他方法可以做到这一点,但我认为这是最干净的方法之一。
此处将解释private Type事物:Private this as TSomething