我在VBA中有一组Sub()。 我想写一个代码设置一个优先级,哪个潜艇应该作为第一个和后来运行

我有一组Sub()。 我想写一个代码设置优先级。 例如,Sub Start()应该作为第一个,Sub Input()作为第二个,Sub End()作为最后一个。

我更熟悉MS Access中的这种编码。 这是我通常使用的一个例子:

Public Sub executeAnalysis() 'Turns off the Access warning messages´ DoCmd.SetWarnings False 'Turns on the hourglass DoCmd.Hourglass True 'Runs the analysis DoCmd.OpenQuery "Q001_DateCreation" DoCmd.OpenQuery "Q001a_Insert_N0" DoCmd.OpenQuery "Q002_WithoutRejections" DoCmd.OpenQuery "Q003_GroupByFirstDate" DoCmd.OpenQuery "Q004_Duration" DoCmd.OpenQuery "Q005_InTime" DoCmd.OpenQuery "Q006_OnlyMatl" DoCmd.OpenQuery "Q007_CPOs" DoCmd.OpenQuery "Q008_GroupByMatl" 'Turns off the hourglass DoCmd.Hourglass False 'Turns the Access warning messages back on DoCmd.SetWarnings True 'Msg Box when finished MsgBox "Finished Analysis!" End Sub 

我会感激你的帮助!

干杯I_K_M

与任何其他具有VBA支持的MS产品一样,Excel将按照程序中给出的顺序执行代码(当然,考虑stream程控制结构)。 所以你应该做的唯一的事情就是按照你想要给他们打电话的顺序写电话给每个子。

 public sub executeStuff() call mySub_start() call mySub_whatGoesNext() call mySub_finish() end sub 

正如你所看到的,这正是你要用Access对象做的事情。

当然,您可以设置一些条件来定义是否调用特定的过程。 一个简单的例子:

 public sub executeStuff() call mySub_start() if ThisWorkbook.Sheets("Sheet1").Range("A1").Value = 10 then call mySub_doThis() else call mySub_doThat() end if call mySub_finish() end sub 

这是非常简单的代码。 但这就是我如何做到的!

Private Sub Analysis_Click()

Application.ScreenUpdating = False

'运行分析呼叫格式化呼叫重命名呼叫SumIFF呼叫ArrayIFF呼叫CW呼叫状态呼叫OpenValue呼叫国家呼叫检查呼叫Removeformulas呼叫文本

Application.ScreenUpdating = True

“MsgBox完成MsgBox”完成分析!“ 结束小组