vba:如果在同一個module里編寫多個sub,可以讓它們按編寫順序自動運行嗎?

vba菜鳥求問,謝謝


首先,想問一下,你所說的這些,是在指在Excel裡面的VBA么?

如果是在Excel里,你需要做到以下兩步:

  1. 如果你寫了多個宏(sub),想讓它們按要求的順序來運行,你可以另外編寫一個宏,用來分別點它們的名(即調用,用call命令)就可以。又或者可以在每個宏的後面,直接調用下一個用到的宏。

  2. 要使編寫的宏自動運行,就要在工作表中編寫觸髮型的宏,再通過此宏去調用你放在模塊(module)裡面的宏。


樓上Allate已經回答了,我補充個。

假如宏非常多,可以如下操作

所有的宏有規律命名,例如有15個,那麼宏依次是

sub hong1,sub hong2,sub hong3......sub hong15

最後寫個循環匯總以上所有宏

Sub huizong()

Dim q

For q = 1 To 15

Application.Run "hong" q

Next q

End Sub

運行最後這個匯總宏,你的前15個宏就會依次按順序運行。


這個還是有用的。我就做過 報表自動處理可能有幾十步。一步一步點按鈕再等確實太蛋疼。我就乾脆做了一個form並且放了一個列表框 自動順序執行並且返回狀態


高手真多。不過我覺得題主是不是想多了 既然要多個宏順序運行 何必麻煩?直接把所有宏的內容寫在一個過程里不就完了?


可以的

每一個Sub都是一個過程,module你可以理解成一個容器,是存放這些過程的

過程放在這裡就只是放在這裡,不會運行。那麼想讓過程執行,就需要調用或者觸發過程。

比如你說的你有很多個按鈕,點了就執行,這就是一個觸發,類似的觸發還有很多,在VBA的目錄下可以看到。

因為按鈕只能綁定一個宏,那麼你需要新建一個sub,在裡面依順序調用你需要的過程,然後將這個過程綁定到按鈕就行了


沒太明白你到底要幹什麼,如果只是為了讓sub按順序運行,如前面人的回答,你必須再寫一個sub,在這個sub裡面執行你指定的sub才行


通過一些繁雜的方法,能。

但是產生這麼奇怪的需求題主肯定是哪裡想錯了。


推薦閱讀:

excel中vba是否能夠將數據填充到網頁中?
Excel 2013 有哪些不錯的實用應用程序值得推薦?
Excel如何將兩個表,根據有相同數據的一列數據,自動填寫到另外一張表?
EXCEL突然有一天打開之後,所有的格式默認設置都變成了日期。如何將默認單元格格式修改成常規?
有哪些免費非常好用的excel插件值得下載使用?

TAG:MicrosoftExcel | VBA |