[vba] मैं वीबीए में ग्लोबल वैरिएबल कैसे घोषित करूं?



Answers

यह scope के बारे में एक सवाल scope

यदि आप केवल फ़ंक्शन के जीवनकाल को अंतिम रूप देने के लिए चर चाहते हैं, तो चर या घोषित करने के लिए उप- आयाम घोषित करने के लिए Dim ( आयाम के लिए छोटा) का उपयोग करें:

Function AddSomeNumbers() As Integer
    Dim intA As Integer
    Dim intB As Integer
    intA = 2
    intB = 3
    AddSomeNumbers = intA + intB
End Function
'intA and intB are no longer available since the function ended

एक वैश्विक चर (जैसा कि स्लैक्स ने बताया) Public कीवर्ड का उपयोग करके फ़ंक्शन के बाहर घोषित किया गया है। यह चर आपके चल रहे एप्लिकेशन के जीवन के दौरान उपलब्ध होगा। एक्सेल के मामले में, इसका मतलब यह है कि वेरिएबल तब तक उपलब्ध होंगे जब तक कि उस विशेष एक्सेल कार्यपुस्तिका खुली न हो।

Public intA As Integer
Private intB As Integer

Function AddSomeNumbers() As Integer
    intA = 2
    intB = 3
    AddSomeNumbers = intA + intB
End Function
'intA and intB are still both available.  However, because intA is public,  '
'it can also be referenced from code in other modules. Because intB is private,'
'it will be hidden from other modules.

आपके पास वेरिएबल्स भी हो सकते हैं जो किसी विशेष मॉड्यूल (या कक्षा) के भीतर ही Private कीवर्ड के साथ घोषित करके पहुंच योग्य हो।

यदि आप एक बड़ा आवेदन बना रहे हैं और वैश्विक चर का उपयोग करने की आवश्यकता महसूस करते हैं, तो मैं केवल आपके वैश्विक चर के लिए एक अलग मॉड्यूल बनाने की अनुशंसा करता हूं। इससे आपको एक ही स्थान पर उनका ट्रैक रखने में मदद मिलनी चाहिए।

Question

मैंने निम्नलिखित कोड लिखा:

Function find_results_idle()

    Public iRaw As Integer
    Public iColumn As Integer
    iRaw = 1
    iColumn = 1

और मुझे त्रुटि संदेश मिलता है:

"सब या फंक्शन में अवैध विशेषता"

क्या आप जानते हैं कि मैंने क्या गलत किया?

मैंने Public बजाय Global का उपयोग करने की कोशिश की, लेकिन मुझे एक ही समस्या मिली।

मैंने समारोह को स्वयं 'सार्वजनिक' घोषित करने की कोशिश की, लेकिन यह भी अच्छा नहीं था।

वैश्विक चर बनाने के लिए मुझे क्या करने की ज़रूरत है?




यदि यह फ़ंक्शन मॉड्यूल / कक्षा में है, तो आप उन्हें केवल फ़ंक्शन के बाहर लिख सकते हैं, इसलिए इसमें Global Scope । ग्लोबल स्कोप का मतलब है कि वैरिएबल को उसी मॉड्यूल / क्लास में किसी अन्य फ़ंक्शन द्वारा एक्सेस किया जा सकता है (यदि आप घोषणा कथन के रूप में dim उपयोग करते हैं, तो public रूप से उपयोग करें यदि आप चाहते हैं कि सभी मॉड्यूल में सभी फ़ंक्शन द्वारा चर का उपयोग किया जा सके):

Dim iRaw As Integer
Dim iColumn As Integer

Function find_results_idle()
    iRaw = 1
    iColumn = 1
End Function

Function this_can_access_global()
    iRaw = 2
    iColumn = 2
End Function



सामान्य घोषणा में एक सार्वजनिक पूर्णांक बनाएँ।

फिर अपने कार्य में आप हर बार अपना मूल्य बढ़ा सकते हैं। उदाहरण देखें (सीएसवी के रूप में ईमेल के अटैचमेंट्स को सहेजने के लिए फ़ंक्शन)।

Public Numerator As Integer

Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
Dim FileName As String

saveFolder = "c:\temp\"

     For Each objAtt In itm.Attachments
            FileName = objAtt.DisplayName & "_" & Numerator & "_" & Format(Now, "yyyy-mm-dd H-mm-ss") & ".CSV"
                      objAtt.SaveAsFile saveFolder & "\" & FileName
                      Numerator = Numerator + 1

          Set objAtt = Nothing
     Next
End Sub



Related