首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结束sub时出现VBA应用程序或对象定义错误

结束sub时出现VBA应用程序或对象定义错误
EN

Stack Overflow用户
提问于 2017-06-14 04:13:04
回答 0查看 121关注 0票数 0

因此,我设置了一个自定义ribbon,它有两个按钮:一个用于运行模拟,另一个用于取消模拟。运行分析宏时,将显示进度条,直到分析完成为止。

cancel按钮运行一个只有End的sub。但问题是,当用户单击cancel时,会出现一个错误,上面写着"Application defined or object defined error“

基本上,我正在尝试在功能区中获得一个按钮来停止模拟宏,而不会抛出错误。

我尝试使用On Error语句转到sub的末尾,但它仍然出现相同的结果。下面是宏的代码:

代码语言:javascript
复制
Public Sub SimCallback(control As IRibbonControl)

Dim CurrentTrial As Long
Dim NumberOfTrials As Long
Dim StartTime As Double
Dim EndTime As Double
Dim SimBar As ProgressBar
Set SimBar = New ProgressBar

' Custom parameters for progress bar. References separate class
With SimBar
    .Title = "Simulation Progress"
    .StartColour = rgbGreen
    .Top = Application.Top + 125
    .Left = Application.Left + 25
End With

' Pre-sim actions
Worksheets("Histograms").EnableCalculation = False
Worksheets("Monte Carlo Results").EnableCalculation = False
StartTime = Timer
Worksheets("Monte Carlo Calculation").Range("U1:V10000").Clear
Let CurrentTrial = 1
NumberOfTrials = Worksheets("Monte Carlo Results").Range("M2").value
SimBar.TotalActions = NumberOfTrials
SimBar.ShowBar

' Loop repeats until selected number of trials have been performed.
' Values are stored in U and V columns on same sheet.

Do While CurrentTrial < NumberOfTrials
    DoEvents
    Worksheets("Monte Carlo Calculation").Calculate
    For CurrentTrial = 1 To NumberOfTrials
        Worksheets("Monte Carlo Calculation").Range("U" & CurrentTrial).value = Worksheets("Monte Carlo Calculation").Range("J2").value
        Worksheets("Monte Carlo Calculation").Range("V" & CurrentTrial).value = Worksheets("Monte Carlo Calculation").Range("T2").value
        SimBar.NextAction
        Next CurrentTrial
    CurrentTrial = CurrentTrial + 1
Loop

' Output range is copied to separate sheet, since referencing the original sheet slowed down the simulation time.

Worksheets("Monte Carlo Calculation").Range("U1:V10000").Copy Destination:=Worksheets("Histograms").Range("H1:J10000")
Worksheets("Histograms").EnableCalculation = True
Worksheets("Monte Carlo Results").EnableCalculation = True

' Display sim time and terminate progress bar
EndTime = Round(Timer - StartTime, 2)
SimBar.Terminate
MsgBox "Simulation Complete (" & EndTime & " seconds)", vbInformation

End Sub
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44530684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档