簡體   English   中英

模塊和模塊表之間有什么區別?

[英]What's the difference between module and a module sheet?

我的Excel VBA項目中有三個模塊(標准模塊,而不是類模塊)。 通過右鍵單擊VBAProject並插入一個模塊來添加其中之一。 通過執行“ modules.add”添加了其中兩個; 我猜模塊就是模塊表,對嗎? 因此,我的問題是:
1.模塊在VBA中是什么意思?
2.如何在添加模塊表時知道創建哪個模塊?
3.為什么我添加工作表時沒有模塊出現?

模塊只是放置代碼的地方。 您可以將其視為一張紙,可以在其中寫一些東西。

在Excel中,您可以將代碼放在模塊中,也可以“放在”工作表(稱為模塊表)的后面。 始終由您手動添加模塊。 “模塊表”是表的一部分,因此每當您創建或刪除表時,EXCEL都會自動添加或刪除“模塊表”

當您在模塊中放置一些代碼和變量時,可立即從工作簿中的所有工作表中獲取它們,這取決於您如何聲明變量,子函數和函數(私有/公共)

通常,當一個代碼將代碼放在工作表的后面時,是因為該代碼只能從該特定工作表中調用,並且只能對其執行操作。 我個人出於以下原因從來沒有在工作表級別上工作:

  • 如果刪除工作表,則將丟失其背后的所有代碼。

  • 如果導出工作表,則也將導出代碼。

  • 如果復制工作表,則也將復制代碼。

  • 如果要在另一個地方的特定工作表后面運行代碼,則必須完全限定您的調用和變量,這是一個可怕的解決方案,而且很無聊

我的建議是:在EXCEL中,永遠不要在工作表級別上工作,使用模塊,並且如果您達到了不錯的代碼量,請使用多個模塊將其按邏輯分組

RE 1:可以說,模塊就像已經初始化的單例類。 換句話說,模塊的代碼(公共屬性/變量,公共方法等)始終可用,在嘗試使用該實例之前不必繼承實例,但是,模塊屬性/變量中的所有數據都是通用的“應用程序” -寬”

RE 2:是“工作表模塊”,而不是“模塊工作表”。 這意味着什么都沒有,但新添加的工作表在添加時帶有一個模塊。 擁有此功能或稍后向工作表添加模塊之間沒有區別。 您可以通過按ALT + F11來打開代碼編輯器窗口並查看模塊,類等。

RE 3:默認情況下,出於安全原因,沒有將VBA代碼添加到任何新表中。 如果工作簿中包含宏(VBA代碼),則需要格外注意,因此默認情況下,該工作簿不是VBA(宏)工作簿。

最后但並非最不重要的一點,請注意一個模塊或另一個模塊之間沒有區別。 創建模塊的方式不會影響模塊的行為,並且Office應用程序(Excel,Word等)中只有一種“模塊類型”(以及一種“類模塊類型”)

對於數字2:

Sub moduleAdd()
Modules.Add
'Modules.Add
qq = Modules.Count
MsgBox "total added module by code = " & qq

For ii = 1 To qq
Set modu = Modules(ii)
If ii = qq Then MsgBox "Newly added module = " & modu.Name
Next
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM