我有一個模塊和用戶窗體的VBA項目。我想在我的用戶窗體中使用我的模塊中的一些變量。有沒有辦法跨模塊使用局部變量?
是否有必要在全局聲明這些變量?我不喜歡全局變量,因爲它們在代碼執行後留在內存中,我必須在宏的開始處逐個重置這些變量。我不能使用關鍵字End來清除內存中的變量,因爲我需要記住這些變量中的一個或兩個。人們通常如何做?
編輯:有沒有辦法通過從用戶窗體到模塊的變量,而無需創建一個全局變量?你可以這樣做
我有一個模塊和用戶窗體的VBA項目。我想在我的用戶窗體中使用我的模塊中的一些變量。有沒有辦法跨模塊使用局部變量?
是否有必要在全局聲明這些變量?我不喜歡全局變量,因爲它們在代碼執行後留在內存中,我必須在宏的開始處逐個重置這些變量。我不能使用關鍵字End來清除內存中的變量,因爲我需要記住這些變量中的一個或兩個。人們通常如何做?
編輯:有沒有辦法通過從用戶窗體到模塊的變量,而無需創建一個全局變量?你可以這樣做
在您的用戶表單中創建一個公共屬性,並使用該屬性將該變量傳遞給表單。 Useforms只是類模塊,只是它們有一個用戶界面組件。例如:在您的用戶窗體的代碼模塊
Option Explicit
Private msLocalVar As String
Public Property Get LocalVar() As String
LocalVar = msLocalVar
End Property
Public Property Let LocalVar(sLocalVar As String)
msLocalVar = sLocalVar
End Property
Private Sub CommandButton1_Click()
Me.LocalVar = Me.LocalVar & " more strings attached"
Me.Hide
End Sub
,並以標準模塊
Sub ShowForm()
Dim sLocalVar As String
Dim ufUserForm1 As UserForm1
sLocalVar = "Some string"
Set ufUserForm1 = New UserForm1
ufUserForm1.LocalVar = sLocalVar 'pass in variable
ufUserForm1.Show
'This executes after the .Hide in the form
Debug.Print ufUserForm1.LocalVar
'Close out the form - previously just hidden
Unload ufUserForm1
End Sub
一種方法是聲明公共變量是這樣的:
Public strvar as String
Sub Abfrage()
'Your Code
End Sub
但是,如果你不喜歡這種方式,你可以插入一個新的Excel表,設置新的屬性工作表添加到「2 - xlSheetVeryHidden」,並且您可以在該工作表的單元格中寫入值並從用戶窗體讀取它們。
所以你不會有任何全局變量,但所有的值都在該表。然後,如果需要,可以從該表中取出值。
完美,謝謝! – Cutter 2012-03-27 15:16:31
是否可以將用戶窗體中的變量傳遞給模塊而不創建全局變量? – Cutter 2012-03-29 22:15:03