VBA में चर और स्थिरांक

VBA में, किसी भी अन्य प्रोग्रामिंग भाषा की तरह, किसी भी मान को संग्रहीत करने के लिए चर और स्थिरांक का उपयोग किया जाता है। जैसा कि नाम से ही स्पष्ट है, चर बदल सकते हैं, जबकि स्थिरांक निश्चित मूल्यों को संग्रहीत करते हैं।

उदाहरण के लिए, एक स्थिरांक Pi मूल्य 3,14159265 संग्रहीत करता है ... कार्यक्रम के निष्पादन के दौरान "पाई" संख्या नहीं बदलेगी, लेकिन इस तरह के मूल्य को स्थिर के रूप में संग्रहीत करना अभी भी अधिक सुविधाजनक है।

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

जानकारी का प्रकार

सभी चर और स्थिरांक एक विशेष डेटा प्रकार के होते हैं। नीचे दी गई तालिका VBA में उपयोग किए गए डेटा प्रकारों को विवरण और संभावित मानों की श्रेणी के साथ सूचीबद्ध करती है:

डाटा प्रकार आकारDescriptionमूल्यों की श्रृंखला
बाइट1 बाइट्ससकारात्मक आंकड़े; अक्सर बाइनरी डेटा के लिए उपयोग किया जाता है0 से 255
बूलियन2 बाइट्ससही या गलत हो सकता हैसही या गलत
पूर्णांक2 बाइट्सपूर्ण संख्या (कोई भिन्नात्मक भाग नहीं)-32 से +768 तक
लंबा4 बाइट्सबड़े पूर्णांक (कोई भिन्नात्मक भाग नहीं)от -2 147 483 648 до +2 147 483 647
एक4 बाइट्सएकल सटीक फ़्लोटिंग पॉइंट नंबर-3.4e38 से +3.4e38 . तक
दोगुना8 बाइट्सडबल सटीक फ़्लोटिंग पॉइंट नंबर-1.8e308 से +1.8e308 . तक
मुद्रा8 बाइट्सफ़्लोटिंग पॉइंट नंबर, दशमलव स्थानों की एक निश्चित संख्या के साथот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
तारीख8 बाइट्सदिनांक और समय - दिनांक प्रकार के डेटा को एक फ्लोटिंग पॉइंट नंबर द्वारा दर्शाया जाता है। इस संख्या का पूर्णांक भाग दिनांक को व्यक्त करता है, और भिन्नात्मक भाग समय को व्यक्त करता है।1 जनवरी, 100 से 31 दिसंबर, 9999 . तक
वस्तु4 बाइट्सवस्तु संदर्भकोई वस्तु संदर्भ
तारबदल रहा हैअक्षरों का समूह। स्ट्रिंग प्रकार निश्चित या परिवर्तनशील लंबाई का हो सकता है। चर लंबाई के साथ अधिक सामान्यतः उपयोग किया जाता हैनिश्चित लंबाई - लगभग 65 वर्णों तक। परिवर्तनीय लंबाई - लगभग 500 बिलियन वर्णों तक
प्रकारबदल रहा हैइसमें दिनांक, फ़्लोट या वर्ण स्ट्रिंग हो सकती है। इस प्रकार का उपयोग उन मामलों में किया जाता है जहां यह पहले से ज्ञात नहीं है कि किस प्रकार का डेटा दर्ज किया जाएगा।संख्या - डबल, स्ट्रिंग - स्ट्रिंग

जाहिर है, ऊपर दी गई तालिका का उपयोग करके और सही डेटा प्रकार का चयन करके, आप मेमोरी का अधिक किफायती उपयोग कर सकते हैं (उदाहरण के लिए, डेटा प्रकार चुनें पूर्णांक बजाय लंबा or एक बजाय दोगुना) हालाँकि, अधिक कॉम्पैक्ट डेटा प्रकारों का उपयोग करते समय, आपको सावधान रहने की आवश्यकता है कि आपका कोड उनमें अनुपातहीन रूप से बड़े मूल्यों को फिट करने का प्रयास नहीं करता है।

चर और स्थिरांक घोषित करना

अनुवादक का नोट: VBA में चर के बारे में बोलते हुए, यह एक और बहुत महत्वपूर्ण बिंदु का उल्लेख करने योग्य है। यदि हम एक चर घोषित करते हैं लेकिन उसे कोई मान निर्दिष्ट नहीं करते हैं, तो इसे डिफ़ॉल्ट मान के साथ प्रारंभ किया जाता है:

• टेक्स्ट स्ट्रिंग्स को खाली स्ट्रिंग्स के साथ प्रारंभ किया जाता है;

• संख्याएं — मान 0;

• चर टाइप करें बूलियन - असत्य;

• तिथियां - 30 दिसंबर, 1899।

एक चर या स्थिरांक का उपयोग करने से पहले, इसे घोषित किया जाना चाहिए। ऐसा करने के लिए, मैक्रो में कोड की निम्न सरल रेखा जोड़ें:

Dim Имя_Переменной As Тип_Данных

कोड की उपरोक्त पंक्ति में चर का नाम कोड में उपयोग किए जाने वाले चर का नाम है, और डाटा प्रकार इस आलेख में थोड़ा पहले दी गई तालिका से डेटा प्रकारों में से एक है। उदाहरण के लिए:

डिम sVAT_Rate सिंगल डिम i इंटीजर के रूप में

स्थिरांक समान रूप से घोषित किए जाते हैं, लेकिन स्थिरांक घोषित करते समय, उनके मूल्य को तुरंत इंगित किया जाना चाहिए। उदाहरण के लिए, इस तरह:

कॉन्स्ट iMaxCount = 5000 कॉन्स्ट iMaxScore = 100

एक्सेल में वेरिएबल घोषित करना आवश्यक नहीं है। डिफ़ॉल्ट रूप से, एक्सेल में सभी दर्ज किए गए लेकिन घोषित नहीं किए गए चर का प्रकार होगा प्रकार और सांख्यिक और पाठ्य मान दोनों को स्वीकार करने में सक्षम होंगे।

इस प्रकार, प्रोग्रामर किसी भी समय नए चर का उपयोग कर सकता है (भले ही इसे घोषित नहीं किया गया हो), और एक्सेल इसे एक प्रकार के चर के रूप में मानेगा प्रकार. हालाँकि, ऐसा न करने के कई कारण हैं:

  1. मेमोरी उपयोग और कम्प्यूटेशनल गति। यदि आप डेटा प्रकार के संकेत के साथ एक चर घोषित नहीं करते हैं, तो डिफ़ॉल्ट रूप से इसे प्रकार पर सेट किया जाएगा प्रकार. यह डेटा प्रकार अन्य डेटा प्रकारों की तुलना में अधिक मेमोरी का उपयोग करता है। प्रति चर कुछ अतिरिक्त बाइट्स ज्यादा नहीं लग सकते हैं, लेकिन व्यवहार में, कार्यक्रमों में हजारों चर हो सकते हैं (विशेषकर सरणियों के साथ काम करते समय)। इसलिए, जैसे चर द्वारा उपयोग की जाने वाली अतिरिक्त मेमोरी प्रकार, प्रकार के चर की तुलना में पूर्णांक or एक, एक महत्वपूर्ण राशि तक जोड़ सकते हैं। इसके अलावा, प्रकार के चर के साथ संचालन प्रकार अन्य प्रकार के चरों की तुलना में बहुत अधिक धीरे-धीरे निष्पादित किया जाता है, क्रमशः, प्रकार के एक अतिरिक्त हजार चर प्रकार गणना को काफी धीमा कर सकता है।
  2. परिवर्तनीय नामों में टाइपो की रोकथाम। यदि सभी चर घोषित किए जाते हैं, तो VBA कथन का उपयोग किया जा सकता है - विकल्प स्पष्ट (हम इसके बारे में बाद में बात करेंगे) ताकि सभी अघोषित चरों की पहचान की जा सके। यह गलत तरीके से लिखे गए चर नाम के परिणामस्वरूप प्रोग्राम में त्रुटि की उपस्थिति को समाप्त करता है। उदाहरण के लिए, नाम के एक चर का उपयोग करना sVAT_दर, आप एक टाइपो बना सकते हैं और, इस चर के लिए एक मान निर्दिष्ट करते हुए, लिख सकते हैं: "VATRate = 0,175"। यह उम्मीद की जाती है कि अब से, चर sVAT_दर 0,175 का मान होना चाहिए - लेकिन निश्चित रूप से ऐसा नहीं है। यदि सभी उपयोग किए गए चरों की अनिवार्य घोषणा का तरीका सक्षम है, तो VBA संकलक तुरंत एक त्रुटि का संकेत देगा, क्योंकि यह चर नहीं ढूंढेगा वैट दर उनमें से घोषित।
  3. उन मानों को हाइलाइट करना जो घोषित प्रकार के चर से मेल नहीं खाते। यदि आप एक निश्चित प्रकार का एक चर घोषित करते हैं और इसे एक अलग प्रकार का डेटा असाइन करने का प्रयास करते हैं, तो आपको एक त्रुटि मिलेगी, जिसे अगर ठीक नहीं किया गया, तो प्रोग्राम क्रैश हो सकता है। पहली नज़र में, यह चर घोषित न करने का एक अच्छा कारण प्रतीत हो सकता है, लेकिन वास्तव में, पहले की तुलना में यह पता चला है कि चरों में से एक को गलत डेटा प्राप्त हुआ था जिसे प्राप्त करना चाहिए था - इतना बेहतर! अन्यथा, यदि प्रोग्राम चलता रहता है, तो परिणाम गलत और अप्रत्याशित हो सकते हैं, और त्रुटियों का कारण खोजना बहुत कठिन होगा। यह भी संभव है कि मैक्रो को "सफलतापूर्वक" निष्पादित किया जाएगा। नतीजतन, त्रुटि किसी का ध्यान नहीं जाएगी और गलत डेटा के साथ काम जारी रहेगा!

इस संबंध में, एक गलत डेटा प्रकार का पता लगाना और कोड में ऐसी त्रुटियों को जल्द से जल्द ठीक करना वांछनीय है। इन कारणों से, यह अनुशंसा की जाती है कि आप VBA मैक्रो लिखते समय सभी चर घोषित करें।

विकल्प स्पष्ट

ऑपरेटर विकल्प स्पष्ट वीबीए कोड में उपयोग किए जाने वाले सभी चरों को घोषित करने का कारण बनता है, और सभी अघोषित चर को संकलन के दौरान त्रुटियों के रूप में चिह्नित करता है (कोड निष्पादन शुरू होने से पहले)। इस ऑपरेटर को लागू करना मुश्किल नहीं है - बस इस लाइन को VBA फ़ाइल के शीर्ष पर लिखें:

Option Explicit

यदि आप हमेशा सम्मिलित करना चाहते हैं विकल्प स्पष्ट बनाए गए प्रत्येक नए VBA मॉड्यूल के शीर्ष पर, यह स्वचालित रूप से किया जा सकता है। ऐसा करने के लिए, आपको विकल्प को सक्षम करने की आवश्यकता है परिवर्तनीय घोषणा की आवश्यकता है वीबीए संपादक सेटिंग्स में।

यह इस प्रकार किया जाता है:

  • Visual Basic Editor मेनू से, क्लिक करें उपकरण > ऑप्शंस
  • दिखाई देने वाले संवाद में, टैब खोलें संपादक (एडिटर)
  • बॉक्स को चेक करें परिवर्तनीय घोषणा की आवश्यकता है और प्रेस OK

सक्षम होने पर, स्ट्रिंग विकल्प स्पष्ट बनाए गए प्रत्येक नए मॉड्यूल की शुरुआत में स्वचालित रूप से डाला जाएगा।

चर और स्थिरांक का दायरा

प्रत्येक घोषित चर या स्थिरांक का अपना सीमित दायरा होता है, यानी कार्यक्रम का एक सीमित हिस्सा जिसमें यह चर मौजूद होता है। दायरा इस बात पर निर्भर करता है कि चर या स्थिरांक की घोषणा कहाँ की गई थी। उदाहरण के लिए, चर लें sVAT_दर, जिसका उपयोग फ़ंक्शन में किया जाता है कुल लागत. निम्न तालिका चर स्कोपिंग के लिए दो विकल्पों पर चर्चा करती है sVAT_दरमॉड्यूल में दो अलग-अलग पदों पर घोषित:

विकल्प स्पष्ट मंद sVAT_Rate एकल फ़ंक्शन के रूप में Total_Cost () डबल के रूप में ... अंतिम फ़ंक्शन
यदि चर sVAT_दर मॉड्यूल की शुरुआत में घोषित किया गया है, तो इस चर का दायरा संपूर्ण मॉड्यूल (यानी चर) होगा sVAT_दर इस मॉड्यूल में सभी प्रक्रियाओं द्वारा मान्यता प्राप्त होगी)।

इसलिए, यदि समारोह में कुल लागत परिवर्तनशील sVAT_दर कुछ मान असाइन किया जाएगा, फिर उसी मॉड्यूल के भीतर निष्पादित अगला फ़ंक्शन चर का उपयोग करेगा sVAT_दर एक ही अर्थ के साथ।

हालाँकि, यदि किसी अन्य मॉड्यूल में स्थित कुछ फ़ंक्शन को कहा जाता है, तो उसके लिए चर sVAT_दर पता नहीं चलेगा।

विकल्प स्पष्ट फ़ंक्शन Total_Cost () डबल मंद के रूप में sVAT_Rate एकल के रूप में ... अंतिम फ़ंक्शन
यदि चर sVAT_दर समारोह की शुरुआत में घोषित कुल लागत, तो इसका दायरा केवल इस फ़ंक्शन तक सीमित होगा (अर्थात फ़ंक्शन के भीतर कुल लागत, आप चर का उपयोग कर सकते हैं sVAT_दर, लेकिन बाहर नहीं)।

उपयोग करने का प्रयास करते समय sVAT_दर एक अन्य प्रक्रिया में, VBA कंपाइलर एक त्रुटि की रिपोर्ट करेगा क्योंकि यह चर फ़ंक्शन के बाहर घोषित नहीं किया गया था कुल लागत (बशर्ते कि ऑपरेटर का उपयोग किया जाता है विकल्प स्पष्ट).

ऊपर दिखाए गए उदाहरण में, चर को मॉड्यूल स्तर पर कीवर्ड के साथ घोषित किया गया है धुंधला. हालांकि, यह आवश्यक हो सकता है कि घोषित चर का उपयोग अन्य मॉड्यूल में किया जा सकता है। ऐसे मामलों में, एक खोजशब्द के बजाय एक चर घोषित करने के लिए धुंधला कीवर्ड का उपयोग किया जाना चाहिए सार्वजनिक.

वैसे, कीवर्ड के बजाय मॉड्यूल स्तर पर एक चर घोषित करने के लिए धुंधला कीवर्ड का उपयोग किया जा सकता है निजी, जो इंगित करता है कि यह चर केवल वर्तमान मॉड्यूल में उपयोग के लिए अभिप्रेत है।

आप स्थिरांक घोषित करने के लिए कीवर्ड का भी उपयोग कर सकते हैं। सार्वजनिक и निजी, लेकिन कीवर्ड के बजाय नहीं कॉन्स्ट, इसके साथ।

निम्नलिखित उदाहरण खोजशब्दों के उपयोग को दर्शाते हैं सार्वजनिक и निजी चर और स्थिरांक पर लागू होता है।

विकल्प स्पष्ट सार्वजनिक sVAT_Rate एकल सार्वजनिक आधार के रूप में iMax_Count = 5000 ...    
इस उदाहरण में, कीवर्ड सार्वजनिक एक चर घोषित करने के लिए प्रयोग किया जाता है sVAT_दर और स्थिरांक आईमैक्स_काउंट. इस तरह से घोषित तत्वों का दायरा संपूर्ण वर्तमान प्रोजेक्ट होगा।

इसका मतलब यह है कि sVAT_दर и आईमैक्स_काउंट किसी भी प्रोजेक्ट मॉड्यूल में उपलब्ध होगा।

विकल्प स्पष्ट निजी sVAT_Rate एकल निजी Const के रूप में iMax_Count = 5000 ...    
इस उदाहरण में, एक चर घोषित करने के लिए sVAT_दर और स्थिरांक आईमैक्स_काउंट इस्तेमाल किया गया कीवर्ड निजी. इन तत्वों का दायरा वर्तमान मॉड्यूल है।

इसका मतलब यह है कि sVAT_दर и आईमैक्स_काउंट वर्तमान मॉड्यूल की सभी प्रक्रियाओं में उपलब्ध होगा, लेकिन अन्य मॉड्यूल में प्रक्रियाओं के लिए उपलब्ध नहीं होगा।

एक जवाब लिखें