VBA मध्ये चल आणि स्थिरांक

VBA मध्ये, इतर कोणत्याही प्रोग्रामिंग भाषेप्रमाणे, व्हेरिएबल्स आणि कॉन्स्टंट्सचा वापर कोणतीही मूल्ये साठवण्यासाठी केला जातो. नावाप्रमाणेच, व्हेरिएबल्स बदलू शकतात, तर स्थिरांक निश्चित मूल्ये साठवतात.

उदाहरणार्थ, एक स्थिर Pi 3,14159265 मूल्य संग्रहित करते… प्रोग्रामच्या अंमलबजावणीदरम्यान “Pi” ही संख्या बदलणार नाही, परंतु असे मूल्य स्थिरांक म्हणून संग्रहित करणे अधिक सोयीचे आहे.

त्याच वेळी, आपण व्हेरिएबल वापरू शकतो sVAT_Rate खरेदी केलेल्या वस्तूंवर व्हॅट दर साठवण्यासाठी. परिवर्तनीय मूल्य sVAT_Rate खरेदी केलेल्या उत्पादनावर अवलंबून बदलू शकतात.

डेटा प्रकार

सर्व चल आणि स्थिरांक एका विशिष्ट डेटा प्रकाराचे असतात. खालील तक्त्यामध्ये VBA मध्ये वापरलेले डेटा प्रकार वर्णन आणि संभाव्य मूल्यांच्या श्रेणीसह सूचीबद्ध केले आहेत:

डेटा प्रकार आकारवर्णनमूल्यांची श्रेणी
बाइट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 अब्ज वर्णांपर्यंत
जिच्यामध्ये variantबदलत आहेतारीख, फ्लोट किंवा वर्ण स्ट्रिंग असू शकते. हा प्रकार अशा प्रकरणांमध्ये वापरला जातो जेव्हा हे आधीच माहित नसते की कोणत्या प्रकारचा डेटा प्रविष्ट केला जाईल.संख्या - दुहेरी, स्ट्रिंग - स्ट्रिंग

अर्थात, वरील सारणी वापरून आणि योग्य डेटा प्रकार निवडून, तुम्ही मेमरी अधिक आर्थिकदृष्ट्या वापरू शकता (उदाहरणार्थ, डेटा प्रकार निवडा पूर्णांक त्याऐवजी लांब or एकच त्याऐवजी दुहेरी). तथापि, अधिक संक्षिप्त डेटा प्रकार वापरताना, तुमचा कोड त्यांच्यामध्ये असमानतेने मोठी मूल्ये बसवण्याचा प्रयत्न करत नाही याची काळजी घेणे आवश्यक आहे.

चल आणि स्थिरांक घोषित करणे

अनुवादकाची टीप: VBA मधील व्हेरिएबल्सबद्दल बोलताना, आणखी एक अतिशय महत्त्वाचा मुद्दा नमूद करणे योग्य आहे. जर आपण व्हेरिएबल घोषित केले परंतु त्याला कोणतेही मूल्य दिले नाही, तर ते डीफॉल्ट मूल्यासह प्रारंभ केले जाते:

• मजकूर स्ट्रिंग्स रिकाम्या स्ट्रिंग्ससह आरंभ केल्या जातात;

• संख्या — मूल्य 0;

• प्रकार चल बुलियन - खोटे;

• तारखा – डिसेंबर ३०, १८९९.

व्हेरिएबल किंवा स्थिरांक वापरण्यापूर्वी, ते घोषित करणे आवश्यक आहे. हे करण्यासाठी, मॅक्रोमध्ये कोडची खालील साधी ओळ जोडा:

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

कोडच्या वरील ओळीत परिवर्तनशील_नाव कोडमध्ये वापरल्या जाणार्‍या व्हेरिएबलचे नाव आहे, आणि डेटा_प्रकार या लेखात थोड्या आधी दिलेल्या सारणीतील डेटा प्रकारांपैकी एक आहे. उदाहरणार्थ:

मंद sVAT_रेट एकल मंद आणि पूर्णांक म्हणून

स्थिरांक अशाच प्रकारे घोषित केले जातात, परंतु स्थिरांक घोषित करताना, त्यांचे मूल्य त्वरित सूचित केले पाहिजे. उदाहरणार्थ, यासारखे:

Const iMaxCount = 5000 Const iMaxScore = 100

एक्सेलमध्ये व्हेरिएबल्स घोषित करणे आवश्यक नाही. डीफॉल्टनुसार, Excel मध्ये प्रविष्ट केलेल्या परंतु घोषित न केलेल्या सर्व चलांचा प्रकार असेल जिच्यामध्ये variant आणि अंकीय आणि मजकूर मूल्य दोन्ही स्वीकारण्यास सक्षम असेल.

अशाप्रकारे, प्रोग्रामर नवीन व्हेरिएबल कधीही वापरू शकतो (जरी ते घोषित केले गेले नसले तरीही), आणि एक्सेल त्यास प्रकाराचे व्हेरिएबल मानेल. जिच्यामध्ये variant. तथापि, हे का करू नये याची अनेक कारणे आहेत:

  1. मेमरी वापर आणि संगणकीय गती. जर तुम्ही डेटा प्रकाराच्या संकेतासह व्हेरिएबल घोषित केले नाही, तर डीफॉल्टनुसार ते प्रकारावर सेट केले जाईल जिच्यामध्ये variant. हा डेटा प्रकार इतर डेटा प्रकारांपेक्षा अधिक मेमरी वापरतो. प्रति व्हेरिएबल काही अतिरिक्त बाइट्स कदाचित जास्त वाटत नाहीत, परंतु सराव मध्ये, प्रोग्राम्समध्ये हजारो व्हेरिएबल्स असू शकतात (विशेषत: अॅरेसह काम करताना). म्हणून, व्हेरिएबल्सद्वारे वापरलेली अतिरिक्त मेमरी जसे जिच्यामध्ये variant, प्रकाराच्या व्हेरिएबल्सच्या तुलनेत पूर्णांक or एकच, लक्षणीय रक्कम जोडू शकते. याव्यतिरिक्त, प्रकाराच्या व्हेरिएबल्ससह ऑपरेशन्स जिच्यामध्ये variant इतर प्रकारच्या व्हेरिएबल्सच्या तुलनेत, अनुक्रमे, अतिरिक्त हजार व्हेरिएबल्सच्या तुलनेत खूप हळू चालवले जातात जिच्यामध्ये variant गणना लक्षणीयरीत्या कमी करू शकते.
  2. परिवर्तनीय नावांमध्ये टायपोस प्रतिबंध. जर सर्व व्हेरिएबल्स घोषित केले असतील, तर VBA स्टेटमेंट वापरले जाऊ शकते − पर्याय स्पष्ट (आम्ही याबद्दल नंतर बोलू) सर्व अघोषित चल ओळखण्यासाठी. हे चुकीच्या पद्धतीने लिहिलेल्या व्हेरिएबल नावाच्या परिणामी प्रोग्राममधील त्रुटीचे स्वरूप काढून टाकते. उदाहरणार्थ, नावाचे व्हेरिएबल वापरणे sVAT_Rate, तुम्ही टायपो करू शकता आणि या व्हेरिएबलला मूल्य नियुक्त करून लिहा: “VATRate = 0,175”. आतापासून ते चल अपेक्षित आहे sVAT_Rate मूल्य 0,175 असले पाहिजे - परंतु अर्थातच ते नाही. जर सर्व वापरलेल्या व्हेरिएबल्सच्या अनिवार्य घोषणेचा मोड सक्षम केला असेल, तर व्हीबीए कंपाइलर ताबडतोब त्रुटी दर्शवेल, कारण त्याला व्हेरिएबल सापडणार नाही. व्हॅटरेट जाहीर केलेल्यांमध्ये.
  3. व्हेरिएबलच्या घोषित प्रकाराशी जुळणारी मूल्ये हायलाइट करणे. जर तुम्ही विशिष्ट प्रकाराचे व्हेरिएबल घोषित केले आणि त्यास वेगळ्या प्रकारचा डेटा देण्याचा प्रयत्न केला, तर तुम्हाला एक त्रुटी मिळेल, जी जर दुरुस्त न करता सोडली तर प्रोग्राम क्रॅश होऊ शकतो. पहिल्या दृष्टीक्षेपात, व्हेरिएबल्स घोषित न करण्याचे हे एक चांगले कारण आहे असे वाटू शकते, परंतु प्रत्यक्षात, व्हेरिएबल्सपैकी एकाने चुकीचा डेटा प्राप्त करणे अपेक्षित होते हे समोर येण्यापेक्षा - तितके चांगले! अन्यथा, प्रोग्राम चालू राहिल्यास, परिणाम चुकीचे आणि अनपेक्षित असू शकतात आणि त्रुटींचे कारण शोधणे अधिक कठीण होईल. हे देखील शक्य आहे की मॅक्रो "यशस्वीपणे" कार्यान्वित होईल. परिणामी, त्रुटी लक्षात घेतली जाणार नाही आणि चुकीच्या डेटासह कार्य सुरू राहील!

या संदर्भात, चुकीचा डेटा प्रकार शोधणे आणि कोडमधील अशा त्रुटी शक्य तितक्या लवकर दुरुस्त करणे इष्ट आहे. या कारणांमुळे, VBA मॅक्रो लिहिताना तुम्ही सर्व व्हेरिएबल्स घोषित करण्याची शिफारस केली जाते.

पर्याय स्पष्ट

ऑपरेटर पर्याय स्पष्ट व्हीबीए कोडमध्ये वापरले जाणारे सर्व व्हेरिएबल्स घोषित करण्यासाठी कारणीभूत ठरतात आणि संकलनादरम्यान सर्व अघोषित व्हेरिएबल्सला त्रुटी म्हणून ध्वजांकित करते (कोड अंमलबजावणी सुरू होण्यापूर्वी). हा ऑपरेटर लागू करणे कठीण नाही - फक्त VBA फाइलच्या अगदी वरच्या बाजूला ही ओळ लिहा:

Option Explicit

आपण नेहमी घालू इच्छित असल्यास पर्याय स्पष्ट तयार केलेल्या प्रत्येक नवीन VBA मॉड्यूलच्या शीर्षस्थानी, हे स्वयंचलितपणे केले जाऊ शकते. हे करण्यासाठी, तुम्हाला पर्याय सक्षम करणे आवश्यक आहे व्हेरिएबल डिक्लेरेशन आवश्यक आहे VBA संपादक सेटिंग्जमध्ये.

हे याप्रमाणे केले जाते:

  • व्हिज्युअल बेसिक एडिटर मेनूमधून, क्लिक करा साधने > पर्याय
  • दिसत असलेल्या डायलॉगमध्ये, टॅब उघडा संपादक
  • बॉक्स चेक करा व्हेरिएबल डिक्लेरेशन आवश्यक आहे आणि दाबा OK

सक्षम केल्यावर, स्ट्रिंग पर्याय स्पष्ट तयार केलेल्या प्रत्येक नवीन मॉड्यूलच्या सुरुवातीला स्वयंचलितपणे समाविष्ट केले जाईल.

चल आणि स्थिरांकांची व्याप्ती

प्रत्येक घोषित व्हेरिएबल किंवा स्थिरांकाची स्वतःची मर्यादित व्याप्ती असते, म्हणजेच प्रोग्रामचा मर्यादित भाग ज्यामध्ये हे व्हेरिएबल अस्तित्वात असते. व्हेरिएबल किंवा स्थिरांकाची घोषणा कुठे केली गेली यावर व्याप्ती अवलंबून असते. उदाहरणार्थ, व्हेरिएबल घ्या sVAT_Rate, जे फंक्शनमध्ये वापरले जाते एकूण किंमत. खालील सारणी व्हेरिएबल स्कोपिंगसाठी दोन पर्यायांची चर्चा करते sVAT_Rateमॉड्यूलमध्ये दोन वेगवेगळ्या पोझिशन्समध्ये घोषित केले:

पर्याय स्पष्ट मंद sVAT_रेट एकल फंक्शन म्हणून Total_Cost() दुप्पट ... फंक्शन समाप्त करा
जर चल sVAT_Rate मॉड्युलच्या अगदी सुरुवातीला घोषित केले, तर या व्हेरिएबलची व्याप्ती संपूर्ण मॉड्यूल असेल (म्हणजे व्हेरिएबल sVAT_Rate या मॉड्यूलमधील सर्व प्रक्रियेद्वारे ओळखले जाईल).

म्हणून, फंक्शनमध्ये असल्यास एकूण किंमत चल sVAT_Rate काही मूल्य नियुक्त केले जाईल, नंतर त्याच मॉड्यूलमध्ये कार्यान्वित केलेले पुढील कार्य व्हेरिएबल वापरेल sVAT_Rate त्याच अर्थाने.

तथापि, दुसर्‍या मॉड्यूलमध्ये असलेले काही फंक्शन कॉल केले असल्यास, त्यासाठी व्हेरिएबल sVAT_Rate ओळखले जाणार नाही.

पर्याय स्पष्ट फंक्शन Total_Cost() दुप्पट मंद sVAT_Rate as single... फंक्शन समाप्त करा
जर चल sVAT_Rate कार्यक्रमाच्या सुरुवातीला घोषित केले एकूण किंमत, तर त्याची व्याप्ती फक्त या फंक्शनपुरती मर्यादित असेल (म्हणजे फंक्शनमध्ये एकूण किंमत, तुम्ही व्हेरिएबल वापरू शकता sVAT_Rate, पण बाहेर नाही).

वापरण्याचा प्रयत्न करताना sVAT_Rate दुसर्‍या प्रक्रियेमध्ये, VBA कंपाइलर त्रुटी नोंदवेल कारण हे व्हेरिएबल फंक्शनच्या बाहेर घोषित केलेले नाही एकूण किंमत (ऑपरेटर वापरला असेल तर पर्याय स्पष्ट).

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

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

तुम्ही स्थिरांक घोषित करण्यासाठी कीवर्ड देखील वापरू शकता. सार्वजनिक и खाजगी, परंतु कीवर्डऐवजी नाही कॉन्स, त्यासह.

खालील उदाहरणे कीवर्डचा वापर दर्शवतात सार्वजनिक и खाजगी चल आणि स्थिरांकांवर लागू.

पर्याय स्पष्ट सार्वजनिक sVAT_Rate as single Public Const iMax_Count = 5000 ...    
या उदाहरणात, कीवर्ड सार्वजनिक व्हेरिएबल घोषित करण्यासाठी वापरले जाते sVAT_Rate आणि स्थिरांक iMax_Count. अशा प्रकारे घोषित केलेल्या घटकांची व्याप्ती संपूर्ण वर्तमान प्रकल्प असेल.

याचा अर्थ असा sVAT_Rate и iMax_Count कोणत्याही प्रकल्प मॉड्यूलमध्ये उपलब्ध असेल.

पर्याय स्पष्ट खाजगी sVAT_Rate एकल खाजगी const iMax_Count = 5000 ...    
या उदाहरणात, व्हेरिएबल घोषित करण्यासाठी sVAT_Rate आणि स्थिरांक iMax_Count कीवर्ड वापरले खाजगी. या घटकांची व्याप्ती सध्याचे मॉड्यूल आहे.

याचा अर्थ असा sVAT_Rate и iMax_Count सध्याच्या मॉड्यूलच्या सर्व प्रक्रियांमध्ये उपलब्ध असेल, परंतु इतर मॉड्यूलमधील प्रक्रियेसाठी उपलब्ध नसेल.

प्रत्युत्तर द्या