如何通过单击命令按钮来停止此宏?

时间:2015-01-28 09:37:55

标签: vba

我有一个代码,我可以复制范围并粘贴值。单击命令按钮后,在一个时间间隔内完成此操作。我需要有关如何通过单击按钮停止或暂停运行此宏的帮助。

这是主要代码:

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

我已经尝试了几件事来阻止它。

  
      
  1. 通过BREAK功能
  2.   
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

2 个答案:

答案 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

希望这有帮助!