Excel VBA variable types and declare | Excel VBA lesson - 9 | local variable, Module level variable
Excel VBA variable types and declare | Excel VBA lesson - 9 | local variable, Module level variable
Types of
Variable
जहां तक हम बात करे variable 3 प्रकार के होते हैं। या ये कहें की किस किस तरह से वारियाबले exist करते हैं।
1.
Local Variable
2.
Module Level Variable
3.
Public level Variable
Example
1.
Local Variable: जो Variable आपके macro के
अन्दर ही खत्म हो जाते हैं जब वो macro finish हो
जाएँ, इसका मतलब ये है की ये Macro के अंडर ही मौजूद रहेगा आप इसको macro के बाहर यूज नहीं कर सकते। जैसे मैं यहाँ पर एक variable लेता हूँ।
Sub Macro1 ()
Dim A As
Integer
मैंने
यहाँ एक variable
लिया है “A”
जब
ये रन होगा तो VBA
अपनी memory मे “A” को Save कर लेगा ओर ये कितना स्पेस लेता है ये Integer पर Depend करता है। ओर आपको एक बात पता होनी चाहिए की VBA इसको अपनी Memory मे
कितनी देर स्टोर करके रखता है तो मैं बता दु, जब हम इसे रन करते हैं
तो जब तक macro
खत्म नहीं होता तब तक इस value को BVA अपनी
मेमोरी मे store
करके रखता है। ताकि वो इसको यूज
कर सके। ये macro
रन होने के बाद जैसे ही stop होगा तो इस value ने
जितना स्पेस लिया होगा VBA उसको
release कर देगा। जिससे की ये स्पेस किसी दूसरे variable के लिए यूज आ सके। यानि के जो Variable आपके macro के
अन्दर ही खत्म हो जाते हैं जब वो macro finish हो
जाएँ तो उनको Local
Variable कहते हैं। एक Example के साथ इसको समझ लेता हैं।
Sub Macro1 ()
Dim A As
Integer
Dim B As
Integer
Dim C As
Integer
A = 20
B = 10
c
= a + b
Range("a1").Value = c
End Sub
यहाँ
पर ये macro
रन होने के बाद खत्म हो जाता है
ओर इन value
ने जो स्पेस लिया है वो release हो जाता है।
2.
Module Level Vairable: इसमे macro एक
ही module के अन्दर किसी भी एक macro मे
किसी दूसरे मकरो के variable को भी रन कर लेता है। इन
variables को हम macro के top मे declare करते
हैं। इसको हम एक example के साथ आपको समझते हैं।
जैसे
हमारे पास एक तो macro हो गया Macro1
Dim A As
Integer
Dim B As
Integer
यहाँ पर हम लिख देंगे Call
Macro2
(ये VBA का एक वर्ड होता है ये एक macro को दूसरे macro से
जोड़ देता है क्योंकि अब हम जो दूसरा macro लेंगे
तो ये call
करेगा दूसरे macro को ओर उसको इसमे जोड़ देगा। क्योंकि हमने एक लाइन ओर लिख दी है
call
macro2 तो मैं एक दूसरा macro ले लेता हूँ।
Sub Macro2 ()
Dim X As
Integer
Dim Y As
Integer
X = 5
Y = X+A+B
अब हम macro1 को रन करेंगे तो A ओर B को रन करने के बाद दूसरे मकरो पर जाएगा क्योंकि हमने इसको
बताया है की macro2
को call करना है ओर आगे जैसे ही रन होगा ओर ये A या B पर पहुंचेगा तो ये एक error शो करेगा “variable not define”
तो कोनसा variable
define नहीं हुआ है जी हाँ A or B क्योंकि ये हमने define नहीं
किए हैं macro2
मे हमने Dim A As Integer या Dim B As Integer
कहीं नहीं लिखा है। ऐसे मे हम देखे की हमने macro1 मे
तो लिखा है ओर फिर दूसरे macro को call किया है तो मैं बताना चहुगा की ये अभी वहीं काम करेगा जहां ये
लिखा है। लेकिन हम इसको यहाँ भी काम करवाना चाहते हैं तो vba के मुताबिक इस variable को Local variable डिक्लैर न करके Module level variable मे declare किया
जाए। Module
level variable declare करने के लिए इसको यहाँ
से हटा करके उपर लगा दे। उधारण के लिए नीचे देखे।
Dim B As
Integer
Sub Macro1 ()
यानि macro name से उपर लगा दे आप देखेगे automatic एक लाइन insert हो
जाएगी। इसका मतलब है अब ये variable किसी
भी भी macro
मे चलेगा। इसको कहीं पर भी declare करने की जरूरत नहीं है सिर्फ इसी Module मे जिसमे आप बेशक अलग अलग macro लिखते हैं। क्योंकि अब हमने इसको Module level variable
declare कर दिया है।
3.
Public Level Variable: इसके अंतर्गत मान लीजिये हमने किसी दूसरे module से किसी value को
यूज करना हो तो हम Public level variable का
यूज करेंगे जैसे मैं दूसरे module मे एक macro लिखता
हूँ Macro3
तो एक नया module इन्सर्ट करेंगे ओर macro लिखेंगे:
Sub Macro3 ()
Dim Ver1
As Long
Dim Ver2
As Long
Ver2 = 5
Ver2 = Var1+A
यहाँ
पर हम मान कर चलते है की A variable दूसरे
module मे भी declare किया
है वो दूसरे module
से भी access कर सकते हैं। तो हमको दूसरे macro मे जाना होगा उसके लिए यहाँ लिखेंगे “Call macro1“ ओर दूसरे मकरो मे जाएंगे ओर रन करके देखेंगे तो यहाँ पर “variable not define” की error शो
करेगा। इसका मतलब ये है की हमने A को define नहीं किया है। एक ही module मे
रन करने के लिए तो define कर दिया है मगर अब हम
दूसरे module
मे हैं तो उसके लिए VBA कहता है की आपने Dim किया
है आप इसको Public
define करें। तो अब हम जहां पर Dim A As
Integer लिखा है उसकी जगह Public A As Integer लिखना
होगा या फिर आप Global A As Integer भी
लिख सकते हैं। अब इसको रन करेंगे तो कोई भी error नहीं
आएगा क्योकि हमने इसको global डिक्लैर
कर दिया है अब इसको आप किसी भी module से access कर सकते हैं लेकिन इसी workbook के
मोदुले से, किसी दूसरी workbook के module से नहीं।
Short मे
समझने के लिए
Local Variable = within sub routine ओर Macro
Module Level Variable = It can be use within module or carry
forward
Public Level Variable = across Modules within workbook
Post a Comment