यह ट्यूटोरियल समझाएगा कि VBA में IIF का उपयोग कैसे करें
VBA IIF फ़ंक्शन एक्सेल में IF फ़ंक्शन का उपयोग करने के समान है। यह परीक्षण करता है कि क्या कोई शर्त पूरी होती है, एक मान (या गणना) यदि TRUE है, तो दूसरा मान (या गणना) यदि FALSE है तो लौटाता है।
यह वीबीए इफ स्टेटमेंट के समान है, कई लोग इसे इस पद्धति का उपयोग करने के लिए एक शॉर्टकट मानते हैं क्योंकि आपको वांछित परिणाम प्राप्त करने के लिए केवल एक लाइन कोड लिखने की आवश्यकता होती है, बजाय एक का उपयोग करने के। अगर… तो… वरना… अंत अगर दिनचर्या। हालाँकि, इसे सही ढंग से उपयोग करने की आवश्यकता है क्योंकि इससे आपके कोड में समस्याएँ हो सकती हैं।
आईआईएफ सिंटेक्स
IFF फ़ंक्शन 3 भागों से बना होता है - तार्किक परीक्षण, सही भाग और झूठा भाग।
- अभिव्यक्ति:तार्किक परीक्षा जो होनी है।
- सच हिस्सा: यदि तार्किक परीक्षण TRUE है तो परिणाम लौटा दिया जाएगा।
- झूठा हिस्सा: तार्किक परीक्षण FALSE होने पर परिणाम जो लौटाया जाएगा।
IIF फ़ंक्शन प्रक्रिया लिखना
123 | फ़ंक्शन GetNames (स्ट्रिंग के रूप में strName) स्ट्रिंग के रूप मेंGetNames = IIF (strName = "जॉन", "नाम जॉन है", "नाम जॉन नहीं है")अंत समारोह |
उपरोक्त फ़ंक्शन में, हम यह देखने के लिए परीक्षण करने के लिए एक उप-प्रक्रिया का उपयोग कर सकते हैं कि फ़ंक्शन में हम जिस चर को पास करते हैं वह स्ट्रिंग "जॉन" है या नहीं।
123 | उप टेस्टगेटनाम ()MsgBox GetNames ("जॉन")अंत उप |
यदि हम TestGetNames उप-प्रक्रिया चलाते हैं, तो यह GetNames फ़ंक्शन को कॉल करेगा और एक संदेश बॉक्स लौटाएगा।
अगर हमने इसके बजाय अगर विधि का इस्तेमाल किया होता, तो कोड इस तरह दिखता:
1234567 | फ़ंक्शन GetNames (स्ट्रिंग के रूप में strName) स्ट्रिंग के रूप मेंअगर (strName = "जॉन") तोGetNames = "नाम जॉन है"अन्यथाGetNames = "नाम जॉन नहीं है"अगर अंतअंत समारोह |
हमने कोड की 5 पंक्तियों के बजाय कोड की एक पंक्ति को प्रभावी ढंग से लिखा है - प्रभावशाली!
इसके बजाय अगर का उपयोग क्यों करें?
निम्न पर विचार करें
123 | फ़ंक्शन GetNames (स्ट्रिंग के रूप में strName) स्ट्रिंग के रूप मेंGetNames = IIF (strName = "जॉन", MsgBox ("नाम जॉन है"), MsgBox ("नाम जॉन नहीं है"))अंत समारोह |
अब यदि आप अपने फ़ंक्शन को कॉल करने के लिए निम्न उप-प्रक्रिया चलाते हैं
123 | उप टेस्टगेटनाम ()GetNames ("जॉन")अंत उप |
आपको पहले जैसा ही मैसेज बॉक्स मिलेगा, लेकिन उसके तुरंत बाद - आपको अगला मैसेज बॉक्स मिलेगा!
IIF फ़ंक्शन कोड की लाइन के TRUE और FALSE दोनों वर्गों को निष्पादित करता है - यह स्थिति को सही पाए जाने के बाद कोड से बाहर नहीं निकलता है - यह अभी भी झूठे अनुभाग को भी निष्पादित करता है - इस प्रकार हमें एक गलत संदेश देता है दूसरा संदेश बॉक्स। अगर आपने इस्तेमाल किया होताअगर… तो… वरना… अगर खत्म करें - ऐसा नहीं होता - IF फ़ंक्शन केवल कोड के TRUE या FALSE अनुभाग को निष्पादित करता है - कोड को दिए जाने वाले तर्क के आधार पर।
कोड को बुरी तरह से डिज़ाइन किया गया है (उद्देश्य पर!) संदेश बॉक्स कोड की पंक्ति के भीतर आयोजित किए जा रहे हैं कि कोड के बाद या उप-दिनचर्या में आईआईएफ स्टेटमेंट चालू है। जैसा कि IIF फ़ंक्शन कथन के TRUE और FALSE दोनों अनुभागों को चलाता है, दोनों संदेश वापस कर दिए जाते हैं।
हम संदेश बॉक्स को IIF फ़ंक्शन लाइन के नीचे ले जाकर, जैसा कि नीचे दिए गए कोड में है, या इस लेख में पहले उदाहरण के अनुसार संदेश बॉक्स को उप-प्रक्रिया में ले जाकर ठीक कर सकते हैं।
1234 | फ़ंक्शन GetNames (स्ट्रिंग के रूप में strName) स्ट्रिंग के रूप मेंGetNames = IIF (strName = "जॉन", "नाम जॉन है", "नाम जॉन नहीं है")संदेशबॉक्स (गेटनाम)अंत समारोह |
यदि आप कोड लिखते समय सावधान रहते हैं, तो IIF फ़ंक्शन आपको कोड की बहुत सारी पंक्तियाँ और अतिरिक्त टाइपिंग बचा सकता है!
नेस्टेड आईआईएफ
हम IF फ़ंक्शन को नेस्ट करने के समान ही IIF फ़ंक्शन को नेस्ट कर सकते हैं लेकिन एक बार फिर, सब कुछ एक पंक्ति में किया जाता है।
123 | समारोह GetDiscount(dblPrice डबल के रूप में) डबल के रूप मेंGetDiscount = IIF (dblPrice> = 500, 10, IIF (dblPrice> = 250, 5, IIF (dblPrice> = 100, 2.5, 0)))अंत समारोह |
फिर हम इस फ़ंक्शन को उप-प्रक्रिया से कॉल कर सकते हैं
12345 | उप FindDiscount ()मंद dblP डबल के रूप मेंडीबीएलपी = 899MsgBox ("आप जो छूट प्राप्त कर सकते हैं वह है" & GetDiscount(dblP) & "%")अंत उप |
या आप इसे यूडीएफ (उपयोगकर्ता परिभाषित फ़ंक्शन) के रूप में उपयोग करके एक्सेल के भीतर से कॉल कर सकते हैं।