![](/img/trans.png)
[英]excel-vba How to make macro replace 5 last character and add it into new colomn until last row
[英]How to add a 'Stop Macro' in excel-vba?
我有一个简单的宏和一个开始运行它的按钮。 我想有一个按钮来阻止它,所以我不必打开vba编辑器。
这是代码。
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
所以我在代码中添加了一行来检查值。 您可以使用其他子更改状态。 如果State设置为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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.