我有一个代码,我可以复制范围并粘贴值。单击命令按钮后,在一个时间间隔内完成此操作。我需要有关如何通过单击按钮停止或暂停运行此宏的帮助。
这是主要代码:
Sub timestamp()
'
' timestamp Macro
'
N = WorksheetFunction.Count(Sheets("DNB").Columns(1))
dnbspread = Sheets("DNB").Range("G5:G30")
Sheets("DNB").Cells(N + 34, 1) = Date
Sheets("DNB").Cells(N + 34, 2) = Time
Sheets("DNB").Range("G5:G30").Copy
Sheets("DNB").Cells(N + 34, 3).PasteSpecial Transpose:=True, Paste:=xlPasteValues
Application.OnTime Now + TimeValue("00:00:05"), "timestamp"
End Sub
我已经尝试了几件事来阻止它。
- 通过BREAK功能
醇>
Sub PauseMacro()
Application.SendKeys "^{BREAK}"
End Sub
2
Public StopMacro as Boolean
Sub SetStopMacro()
StopMacro = True
End Sub
并将其放在代码中:
Sub timestamp()
'
' timestamp Macro
'
N = WorksheetFunction.Count(Sheets("DNB").Columns(1))
dnbspread = Sheets("DNB").Range("G5:G30")
Sheets("DNB").Cells(N + 34, 1) = Date
Sheets("DNB").Cells(N + 34, 2) = Time
Sheets("DNB").Range("G5:G30").Copy
Sheets("DNB").Cells(N + 34, 3).PasteSpecial Transpose:=True, Paste:=xlPasteValues
Application.OnTime Now + TimeValue("00:00:10"), "timestamp"
DoEvents
If StopMacro = True Then Exit Sub
End Sub
如果有人输入了我做错的工作,那么请告诉我。此外,如果您对如何更顺畅地编写它有任何想法,那将会很受欢迎。
感谢名单
的Eivind
答案 0 :(得分:0)
Public StopMacro As Boolean
Sub SetStopMacro()
StopMacro = True
End Sub
Sub timestamp()
'
' timestamp Macro
'
' code here
'
' Put If-Then before Application.OnTime call.
' So prevent next call of 'timestamp()' if StopMacro equals to true
If Not StopMacro Then
Application.OnTime Now + TimeValue("00:00:15"), "timestamp"
End If
End Sub
答案 1 :(得分:0)
您可以在运行宏的模块中声明一个全局变量,然后在单击命令按钮时,为刚刚声明的变量赋值。然后,创建一个if语句,如果变量等于该值,代码将退出。
Private Sub CommandButton2_Click()
btncancel = 1
EMSetup.hide
Exit Sub
End Sub
对于命令按钮。
Global btncancel As Integer
If btncancel = 1 Then
Exit Sub
End If
希望这有帮助!