Board logo

標題: 請教一個問題:VBA寫在工作表1和Module1兩者有甚麼差異? [打印本頁]

作者: jsc0518    時間: 2017-2-23 20:51     標題: 請教一個問題:VBA寫在工作表1和Module1兩者有甚麼差異?

請教一個問題:VBA寫在工作表1和Module1兩者有甚麼差異?

我還在試著學習一些非常基本的VBA
我想了解一下,VBA寫在工作表1和Module1兩者有甚麼差異?

是不是VBA寫在工作表1時,VBA僅能在該工作表1執行
是不是VBA寫在Module1時,VBA可以在任一個工作表執行

再麻煩各位先進幫我解惑!

[attach]26711[/attach]
作者: Hsieh    時間: 2017-2-24 10:25

回復 1# jsc0518


    一般模組(Module1)與工作表模組(工作表1)或是活頁簿模組(thisworkbook)
基本上並無使用上的限制,也就是說程序的呼叫都是可用的。
只是程序依照模組分類存放,有利於集合式的運用
其間差異較大的部分是
1.若程序要供給整個application使用,即公共程序部分應該撰寫在一般模組內
2.物件指定的差異,當一般模組內要取用物件時,必須指明該物件所在之工作表名稱
舉例說明:要取用工作表1的A1儲存格時
在工作表1模組內只需以Range("A1")表示,即可
在一般模組內則應該以Sheets("工作表1").Range("A1")表示(若跨檔案更必須指明活頁簿名稱)
3.通常一般模組內未指定工作表名稱,則取用當前作用之工作表。(即為ActiveSheet)
4.公用程序撰寫於工作表模組,會產生呼叫調用的困難。(尤其是撰寫要運用到工作表的公式函數程序,必須寫在一般模組內)
以上大概是最基本的模組概念,其他差異你可由撰寫經驗中慢慢理解
作者: Kubi    時間: 2017-2-24 11:00

回復 1# jsc0518

另外再補述個人淺見。

通常工作表模組是用在事件程序上較多,列如:
1.Worksheet_SelectionChange 事件程序
2.Worksheet_Change 事件程序
3.Worksheet_Activate 事件程序
4.Worksheet_BeforeDoubleClick 事件程序
5.Worksheet_BeforeRightClick 事件程序
....等

若有需要的話,也可在事件程序內呼叫一般模組內的副程式來做運用。
作者: jsc0518    時間: 2017-2-24 12:12

回復 2# Hsieh

感謝您的詳細教導,我會好好再日後看看兩者的差異,若有問題再與您請教!
作者: jsc0518    時間: 2017-2-24 12:13

回復 3# Kubi


謝謝您所提供的資訊,我會好好學習!
作者: Joforn    時間: 2017-2-27 22:03

一个是模块,一个是类模块,模块共用内存,类模块具有私有内存。
作者: jsc0518    時間: 2017-2-28 14:59

回復 6# Joforn


了解,謝謝指導!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)