【问题标题】:How to stop a macro by clicking a command button?如何通过单击命令按钮来停止宏?
【发布时间】:2022-03-12 20:06:35
【问题描述】:

我有一个复制范围和粘贴值的代码。

这是在我单击命令按钮后的一段时间内完成的。

如何通过单击按钮来停止或暂停此宏?

这里是主要代码:

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 函数
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

【问题讨论】:

  • If Not StopMacro Then Application.OnTime Now + TimeValue("00:00:15"), "timestamp" End If
  • 感谢您的意见。不知道如何放入以及包含什么。我收到“如果没有阻止则结束”错误。
  • 暂停和停止有区别吗?你要哪一个?

标签: vba


【解决方案1】:
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

【讨论】:

    【解决方案2】:

    您可以在运行宏的模块内声明一个全局变量,然后在单击命令按钮时为刚刚声明的变量赋值。然后,创建一个 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
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      • 2016-02-12
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多