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




3 Answers

आपको फ़ंक्शन के बाहर चर घोषित करने की आवश्यकता है:

Public iRaw As Integer
Public iColumn As Integer

Function find_results_idle()
    iRaw = 1
    iColumn = 1

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

Function find_results_idle()

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

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

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

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

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

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

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




वैश्विक चर का उपयोग करने के लिए, वीबीए प्रोजेक्ट यूआई से नया मॉड्यूल डालें और Global का उपयोग करके चर घोषित करें

Global iRaw As Integer
Global iColumn As Integer



प्रश्न वास्तव में दायरे के बारे में है, क्योंकि दूसरे आदमी ने इसे रखा है।

संक्षेप में, इस "मॉड्यूल" पर विचार करें:

Public Var1 As variant     'Var1 can be used in all
                           'modules, class modules and userforms of 
                           'thisworkbook and will preserve any values
                           'assigned to it until either the workbook
                           'is closed or the project is reset.

Dim Var2 As Variant        'Var2 and Var3 can be used anywhere on the
Private Var3 As Variant    ''current module and will preserve any values
                           ''they're assigned until either the workbook
                           ''is closed or the project is reset.

Sub MySub()                'Var4 can only be used within the procedure MySub
    Dim Var4 as Variant    ''and will only store values until the procedure 
End Sub                    ''ends.

Sub MyOtherSub()           'You can even declare another Var4 within a
    Dim Var4 as Variant    ''different procedure without generating an
End Sub                    ''error (only possible confusion). 

आप इस एमएसडीएन संदर्भ को परिवर्तनीय घोषणाओं और इस अन्य स्टैक ओवरफ़्लो प्रश्न पर और अधिक के लिए देख सकते हैं कि चर के दायरे से कैसे बाहर निकलते हैं।

दो अन्य त्वरित चीजें:

  1. कार्यपुस्तिका स्तर चर का उपयोग करते समय व्यवस्थित किया जाए, इसलिए आपका कोड भ्रमित नहीं होता है। कार्यप्रणाली (उचित डेटा प्रकारों के साथ) या तर्क से गुजरना ByRef
  2. यदि आप एक चर को कॉल के बीच अपने मूल्य को संरक्षित करना चाहते हैं, तो आप स्टेटिक स्टेटमेंट का उपयोग कर सकते हैं।



Related

vba excel-vba scope global-variables