2012-03-27 11 views
6

मेरे पास एक मॉड्यूल और उपयोगकर्ताफॉर्म के साथ एक वीबीए प्रोजेक्ट है। मैं अपने यूजरफॉर्म में अपने मॉड्यूल से कुछ चर का उपयोग करना चाहता हूं।मॉड्यूल में स्थानीय चर का उपयोग करने का कोई तरीका है?

क्या यह आवश्यक है कि मैं वैश्विक रूप से इन चरों को घोषित करता हूं? मुझे वैश्विक चर पसंद नहीं है क्योंकि वे कोड के निष्पादन के बाद स्मृति में रहते हैं, और मुझे अपने मैक्रो की शुरुआत में इन चरों को एक-एक करके रीसेट करना होगा। मैं स्मृति से चर को साफ़ करने के लिए कीवर्ड एंड का उपयोग नहीं कर सकता क्योंकि मुझे इन चरों में से एक या दो को याद रखना होगा। आम तौर पर लोग कैसे करते हैं?

संपादित करें: क्या वैश्विक चर बनाने के बिना उपयोगकर्ता से मॉड्यूल में एक चर को पारित करने का कोई तरीका है?

उत्तर

6

अपने उपयोगकर्ताform में एक सार्वजनिक संपत्ति बनाएं और संपत्ति का उपयोग करके चर में चर को पास करें। उपयोग केवल क्लास मॉड्यूल हैं सिवाय इसके कि उनके पास एक उपयोगकर्ता इंटरफ़ेस घटक है। उदाहरण: यदि आपका userform के कोड मॉड्यूल

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 
+0

बिल्कुल सही में, धन्यवाद! – Cutter

+0

क्या वैश्विक चर बनाने के बिना उपयोगकर्ताफॉर्म से मॉड्यूल तक एक चर पारित करना संभव है? – Cutter

1

एक तरह से आप यह कर सकते हैं इस तरह सार्वजनिक चर घोषित करने के लिए होगा:

Public strvar as String 
Sub Abfrage() 
'Your Code 
End Sub 

लेकिन अगर आप इस तरह से पसंद नहीं करते, आप एक नया एक्सेल शीट डाल सकता है, नए के गुणों को सेट शीट "2 - xlSheetVeryHidden" और आप अपने मूल्य उस शीट की कोशिकाओं में लिख सकते हैं और उन्हें अपने उपयोगकर्ताफॉर्म से पढ़ सकते हैं।

तो आपके पास कोई वैश्विक चर नहीं होगा, लेकिन सभी मान उस शीट पर हैं। फिर, यदि आपको आवश्यकता हो तो आप उस शीट से मूल्य निकाल सकते हैं।

संबंधित मुद्दे

 संबंधित मुद्दे