如何添加';停止宏';在excelvba中?
我有一个简单的宏和一个开始运行它的按钮。我想也有一个按钮来停止它,所以我不必打开vba编辑器来做它 这是密码如何添加';停止宏';在excelvba中?,vba,excel,Vba,Excel,我有一个简单的宏和一个开始运行它的按钮。我想也有一个按钮来停止它,所以我不必打开vba编辑器来做它 这是密码 Sub Data_Recording() With Workbooks("Chart_Macro").Sheets("Chart") .Rows(5).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove .Range("B5:F5").Value
Sub Data_Recording()
With Workbooks("Chart_Macro").Sheets("Chart")
.Rows(5).EntireRow.Insert Shift:=xlDown,
CopyOrigin:=xlFormatFromLeftOrAbove
.Range("B5:F5").Value = .Range("B2:F2").Value
End With
Application.OnTime Now + TimeValue("00:00:20"), "Data_Recording"
End Sub
非常感谢。也许一个想法是,在每次迭代中,宏可以检查一个变量的值,甚至是一个隐藏/受保护单元格的值,而另一个宏或按钮可以更改该值,因此,如果它“停止”,宏可以像Armando建议的那样退出循环,您可以使用以下代码:
Sub Data_Recording()
With Workbooks("Chart_Macro").Sheets("Chart")
If .Range(CHECK_ADDRESS) = True Then Exit Sub
.Rows(5).EntireRow.Insert Shift:=xlDown,
CopyOrigin:=xlFormatFromLeftOrAbove
.Range("B5:F5").Value = .Range("B2:F2").Value
End With
Application.OnTime Now + TimeValue("00:00:20"), "Data_Recording"
End Sub
Public Sub SetRecordingState(bStop As Boolean)
Workbooks("Chart_Macro").Sheets("Chart").Range(CHECK_ADDRESS) = bStop
End Sub
因此,我在代码中添加了一行检查值。您可以使用另一个子项更改状态。如果状态设置为True,则过程将停止也许您可以使用Application.OnTime的Schedule参数停止宏的下一次调用?为此,您需要在全局变量中节省时间
Dim NextTime As Date
Sub Data_Recording()
Debug.Print "Data recorded at : " & Now
NextTime = Now + TimeValue("00:00:05")
Application.OnTime NextTime, "Data_Recording"
End Sub
Sub Stop_Recording()
Application.OnTime NextTime, Procedure:="Data_Recording", Schedule:=False
Debug.Print "Recording stopped at : " & Now
End Sub
它的值是多少?它怎么知道这是真的?。感谢单元格中指定为CHECK_ADDRESS的值。这可以是任何细胞。例如,在模块级将其声明为“Private Const CHECK_ADDRESS as String=“$A$1”`