वीबीए अगर, एल्सइफ, एल्स (इफ स्टेटमेंट के लिए अंतिम गाइड)

वीबीए अगर स्टेटमेंट

तो अगर

VBA यदि कथन आपको यह परीक्षण करने की अनुमति देते हैं कि क्या अभिव्यक्तियाँ TRUE हैं या FALSE, परिणामों के आधार पर अलग-अलग कोड चला रही हैं।आइए एक सरल उदाहरण देखें:
1 अगर रेंज ("ए 2")। वैल्यू> 0 फिर रेंज ("बी 2")। वैल्यू = "पॉजिटिव"
यह परीक्षण करता है कि क्या श्रेणी A2 में मान 0 से अधिक है। यदि ऐसा है, तो श्रेणी B2 को "सकारात्मक" के बराबर सेट करनानोट: स्थितियों का परीक्षण करते समय हम =, >, <, , = तुलना ऑपरेटरों का उपयोग करेंगे। हम बाद में लेख में उनके बारे में अधिक विस्तार से चर्चा करेंगे।यहाँ एक सरल एक-पंक्ति इफ स्टेटमेंट के लिए सिंटैक्स है:
1 अगर [test_expression] तो [कार्रवाई]
इसे पढ़ने में आसान बनाने के लिए, आप इफ स्टेटमेंट को दो पंक्तियों में विस्तारित करने के लिए एक लाइन कंटिन्यूएशन कैरेक्टर (अंडरस्कोर) का उपयोग कर सकते हैं (जैसा कि हमने उपरोक्त चित्र में किया था):
12 अगर [test_expression] तो _[कार्य]
12 अगर रेंज ("ए 2")। मान> 0 फिर _रेंज ("बी 2")। मान = "सकारात्मक"

अगर अंत

जब आप एक शर्त का परीक्षण कर रहे हों तो उपरोक्त "एकल-पंक्ति" यदि कथन अच्छी तरह से काम करता है। लेकिन जैसे-जैसे आपके IF स्टेटमेंट कई शर्तों के साथ अधिक जटिल होते जाते हैं, आपको if स्टेटमेंट के अंत में एक "End If" जोड़ना होगा:
123 यदि रेंज ("a2")। मान> 0 तबरेंज ("बी 2")। मान = "सकारात्मक"अगर अंत

यहाँ वाक्य रचना है:

123 अगर [test_expression] तो[कार्य]अगर अंत

एंड इफ इफ स्टेटमेंट के अंत को दर्शाता है।

अब ElseIF में जोड़ें:

ElseIF - एकाधिक शर्तें

ElseIf को मौजूदा if स्टेटमेंट में जोड़ा जाता है। ElseIf परीक्षण करता है कि क्या कोई शर्त पूरी होती है केवल अगर पिछली शर्तें पूरी नहीं हुई हैं.पिछले उदाहरण में हमने परीक्षण किया कि क्या सेल मान सकारात्मक है। अब हम यह भी जांचेंगे कि किसी ElseIf के साथ सेल वैल्यू नेगेटिव है या नहीं:
12345 अगर रेंज ("ए 2")। मान> 0 तोरेंज ("बी 2")। मान = "सकारात्मक"ElseIf Range("a2").Value <0 फिररेंज ("बी 2")। मान = "नकारात्मक"अगर अंत

आप कई स्थितियों का परीक्षण करने के लिए कई ElseIfs का उपयोग कर सकते हैं:

1234567891011 उप if_Multiple_Conditions ()अगर रेंज ("ए 2")। मान = "बिल्ली" तोरेंज ("बी 2")। मान = "म्याऊ"ElseIf Range("a2").Value = "Dog" फिररेंज ("बी 2")। मान = "वूफ"ElseIf Range("a2").Value = "Duck" फिररेंज ("बी 2")। वैल्यू = "क्वैक"अगर अंतअंत उप

अब हम जोड़ेंगे a अन्यथा:

अन्यथा

NS अन्यथा चलेंगे अगर कोई अन्य पिछली शर्तें पूरी नहीं की गई हैं.

हम यह इंगित करने के लिए किसी अन्य का उपयोग करके अपना उदाहरण समाप्त करेंगे कि यदि सेल मान सकारात्मक या नकारात्मक नहीं है, तो यह शून्य होना चाहिए:

1234567 यदि रेंज ("a2")। मान> 0 तबरेंज ("बी 2")। मान = "सकारात्मक"ElseIf Range("a2").Value <0 फिररेंज ("बी 2")। मान = "नकारात्मक"अन्यथारेंज ("बी 2")। मान = "शून्य"अगर अंत

यदि नहीं तो

इफ स्टेटमेंट का सबसे सामान्य प्रकार एक साधारण इफ-एल्स है:

1234567 उप if_Else ()यदि रेंज ("a2")। मान> 0 तबरेंज ("बी 2")। मान = "सकारात्मक"अन्यथारेंज ("बी 2")। मान = "सकारात्मक नहीं"अगर अंतअंत उप

नेस्टेड आईएफएस

यदि आप एक दूसरे के अंदर बयान करते हैं तो आप "घोंसला" भी कर सकते हैं।

1234567891011 उप नेस्टेड_आईएफ ()अगर रेंज ("ए 2")। मान> 0 तोरेंज ("बी 2")। मान = "सकारात्मक"अन्यथाअगर रेंज ("ए 2")। मान <0 फिररेंज ("बी 2")। मान = "नकारात्मक"अन्यथारेंज ("बी 2")। मान = "शून्य"अगर अंतअगर अंतअंत उप

अगर - या, और, ज़ोर, नोट

आगे हम लॉजिकल ऑपरेटरों पर चर्चा करेंगे: या, और, ज़ोर, नहीं।

मैं के लिए

NS या ऑपरेटर परीक्षण अगर कम से कम एक शर्त पूरी होती है.

निम्न कोड परीक्षण करेगा यदि श्रेणी A2 में मान 5,000 से कम या 10,000 से अधिक है:

123 अगर रेंज ("ए 2")। मान 10000 तोरेंज ("बी 2")। मान = "सीमा से बाहर"अगर अंत

आप एक पंक्ति में कई Ors शामिल कर सकते हैं:

123 अगर रेंज ("ए 2")। मान 10000 या रेंज ("ए 2")। मान = 9999 तोरेंज ("बी 2")। मान = "सीमा से बाहर"अगर अंत

यदि आप एकाधिक Ors का उपयोग करने जा रहे हैं, तो आपके कोड को पढ़ने में आसान बनाने के लिए एक पंक्ति निरंतरता वर्ण का उपयोग करने की अनुशंसा की जाती है:

123456 अगर रेंज ("ए 2")। मान <5000 या _रेंज ("ए 2")। मान> 10000 या _रेंज ("ए 2")। मान = 9999 फिररेंज ("बी 2")। मान = "सीमा से बाहर"अगर अंत

अगर व

एंड ऑपरेटर आपको परीक्षण करने की अनुमति देता है यदि सभी शर्तें पूरी होती हैं.

123 अगर रेंज ("ए 2")। वैल्यू> = 5000 और रेंज ("ए 2")। वैल्यू <= 10000 तोरेंज ("बी 2")। मान = "रेंज में"अगर अंत

अगर Xor

Xor ऑपरेटर आपको परीक्षण करने की अनुमति देता है यदि बिल्कुल एक शर्त पूरी होती है. यदि शून्य शर्तें पूरी होती हैं तो Xor FALSE लौटाएगा, यदि दो या अधिक शर्तें पूरी होती हैं, तो Xor भी झूठी वापसी करेगा।

मैंने शायद ही कभी Xor को VBA प्रोग्रामिंग में इस्तेमाल होते देखा हो।

अगर नहीं

Not ऑपरेटर का उपयोग FALSE को TRUE या TRUE से FALSE में बदलने के लिए किया जाता है:

123 उप IF_Not ()MsgBox नहीं (सच)अंत उप

ध्यान दें कि नॉट ऑपरेटर को स्विच करने के लिए अभिव्यक्ति के आसपास कोष्ठक की आवश्यकता होती है।

नॉट ऑपरेटर को इफ स्टेटमेंट पर भी लागू किया जा सकता है:

123 यदि नहीं (रेंज ("ए 2")। वैल्यू> = 5000 और रेंज ("ए 2")। वैल्यू <= 10000) तोरेंज ("बी 2")। मान = "सीमा से बाहर"अगर अंत

अगर तुलना

तुलना करते समय, आप आमतौर पर तुलना ऑपरेटरों में से एक का उपयोग करेंगे:

तुलना ऑपरेटर व्याख्या
= के बराबर
असमान
> से अधिक
>= इससे बड़ा या इसके बराबर
< से कम
<= से कम या बराबर

हालाँकि, आप किसी भी अभिव्यक्ति का उपयोग भी कर सकते हैं या समारोह जिसका परिणाम TRUE या FALSE होता है

अगर - बूलियन फंक्शन

इफ स्टेटमेंट के लिए एक्सप्रेशन बनाते समय, आप किसी भी फ़ंक्शन का उपयोग कर सकते हैं जो TRUE या False उत्पन्न करता है। VBA में इनमें से कुछ कार्य हैं:

समारोह विवरण
दिनांक: यदि एक्सप्रेशन एक मान्य दिनांक है तो TRUE लौटाता है
खाली है रिक्त कक्षों या अपरिभाषित चरों के लिए जाँच करें
त्रुटि है त्रुटि मानों की जाँच करें
शून्य है NULL मान की जाँच करें
संख्यात्मक है संख्यात्मक मान की जाँच करें

उन्हें इस तरह कहा जा सकता है:

1 यदि IsEmpty (रेंज ("A1")। मान) तो MsgBox "सेल खाली"

एक्सेल में कई अतिरिक्त कार्य भी हैं जिन्हें वर्कशीटफंक्शन का उपयोग करके बुलाया जा सकता है। यहाँ Excel IsText फ़ंक्शन का एक उदाहरण दिया गया है:

12 यदि Application.WorksheetFunction.IsText(Range("a2").Value) तो _MsgBox "सेल टेक्स्ट है"

आप अपना खुद का उपयोगकर्ता परिभाषित कार्य (यूडीएफ) भी बना सकते हैं। नीचे हम एक साधारण बूलियन फ़ंक्शन बनाएंगे जो TRUE लौटाता है। तब हम उस फंक्शन को अपने इफ स्टेटमेंट में कॉल करेंगे:

1234567891011 उप if_Function ()अगर TrueFunction तोसंदेश बॉक्स "सच"अगर अंतअंत उपफ़ंक्शन TrueFunction () बूलियन के रूप मेंट्रूफंक्शन = ट्रूअंत समारोह

पाठ की तुलना करना

आप संख्याओं की तुलना के समान पाठ की तुलना भी कर सकते हैं:
1 संदेश बॉक्स "ए" = "बी"
1 संदेश बॉक्स "ए" = "ए"
पाठ की तुलना करते समय, आपको "केस" (ऊपरी या निचला) का ध्यान रखना चाहिए। डिफ़ॉल्ट रूप से, VBA अलग-अलग मामलों वाले अक्षरों को मेल न खाने वाला मानता है। दूसरे शब्दों में, "ए" "ए"।यदि आप चाहते हैं कि VBA मामले को अनदेखा करे, तो आपको अपने मॉड्यूल के शीर्ष पर विकल्प तुलना टेक्स्ट घोषणा को जोड़ना होगा:
1 विकल्प टेक्स्ट की तुलना करें

यह घोषणा करने के बाद "ए" = "ए":
12345 विकल्प टेक्स्ट की तुलना करेंउप if_Text ()संदेश बॉक्स "ए" = "ए"अंत उप

वीबीए अगर पसंद है

वीबीए लाइक ऑपरेटर आपको टेक्स्ट की सटीक तुलना करने की अनुमति देता है। अधिक जानने के लिए "ऑपरेटर की तरह" लिंक पर क्लिक करें, लेकिन हम नीचे एक मूल उदाहरण दिखाएंगे:

12345678 स्ट्रिंग के रूप में मंद strNamestrName = "मिस्टर चार्ल्स"अगर strName जैसे "Mr*" तोसंदेश बॉक्स "सच"अन्यथासंदेश बॉक्स "गलत"अगर अंत

यहां हम तारक "*" वाइल्डकार्ड का उपयोग कर रहे हैं। * किसी भी वर्ण की किसी भी संख्या के लिए खड़ा है। तो उपरोक्त यदि कथन सत्य लौटाएगा। लाइक ऑपरेटर टेक्स्ट से निपटने के लिए एक अत्यंत शक्तिशाली, लेकिन अक्सर कम उपयोग किया जाने वाला टूल है।

अगर लूप्स

वीबीए लूप्स आपको क्रियाओं को दोहराने की अनुमति देता है। IF-ELSE को लूप्स के साथ संयोजित करना कई गणनाओं को शीघ्रता से संसाधित करने का एक शानदार तरीका है।

हमारे सकारात्मक / नकारात्मक उदाहरण के साथ जारी रखते हुए, हम प्रत्येक लूप के लिए कोशिकाओं की एक श्रृंखला के माध्यम से लूप में जोड़ देंगे:

1234567891011121314 उप अगर_लूप ()रेंज के रूप में मंद सेलरेंज में प्रत्येक सेल के लिए ("A2:A6")यदि सेल.वैल्यू > 0 तोसेल। ऑफसेट (0, 1)। मान = "सकारात्मक"ElseIf Cell.Value <0 फिरसेल। ऑफसेट (0, 1)। मान = "नकारात्मक"अन्यथासेल। ऑफसेट (0, 1)। मान = "शून्य"अगर अंतअगली सेलअंत उप

अगर अन्य उदाहरण

अब हम कुछ और विशिष्ट उदाहरणों पर विचार करेंगे।

जांचें कि क्या सेल खाली है

यह कोड जांच करेगा कि कोई सेल खाली है या नहीं। यदि यह खाली है तो यह सेल को अनदेखा कर देगा। यदि यह खाली नहीं है तो यह सेल मान को सेल में दाईं ओर आउटपुट करेगा:
1234567 उप अगर_सेल_खाली ()अगर रेंज ("ए 2")। मान "" तोरेंज ("बी 2")। वैल्यू = रेंज ("ए 2")। वैल्यू:अगर अंतअंत उप

जांचें कि क्या सेल में विशिष्ट टेक्स्ट है

इंस्ट्र फ़ंक्शन परीक्षण करता है कि पाठ की एक स्ट्रिंग किसी अन्य स्ट्रिंग में पाई जाती है। किसी सेल में विशिष्ट टेक्स्ट है या नहीं, यह जांचने के लिए इसे if स्टेटमेंट के साथ प्रयोग करें:
123 अगर इंस्ट्र (रेंज ("ए 2")। मान, "टेक्स्ट")> 0 तोसंदेश बॉक्स "पाठ मिला"अगर अंत

जांचें कि क्या सेल में टेक्स्ट है

यह कोड जांच करेगा कि कोई सेल टेक्स्ट है या नहीं:
1234567 उप if_Cell_Is_Text ()यदि Application.WorksheetFunction.IsText(Range("a2").Value) तोMsgBox "सेल टेक्स्ट है"अगर अंतअंत उप

अगर गोटो

आप किसी इफ स्टेटमेंट के परिणाम का उपयोग कोड के दूसरे सेक्शन पर "गो टू" करने के लिए कर सकते हैं।
12345678910 उप इफगोटो ()अगर IsError(Cell.value) तोगोटो छोड़ेंअगर अंत'कुछ कोड'छोड़ें:अंत उप

अगर सेल खाली है तो रो डिलीट करें

अगर और लूप का उपयोग करके आप जांच सकते हैं कि कोई सेल खाली है या नहीं और यदि ऐसा है तो पूरी पंक्ति को हटा दें।
123456789 उप DeleteRowIfCellBlank ()रेंज के रूप में मंद सेलरेंज में प्रत्येक सेल के लिए ("A2:A10")यदि Cell.Value = "" तो Cell.EntireRow.Deleteअगली सेलअंत उप

यदि संदेशबॉक्स हाँ/नहीं

वीबीए संदेश बॉक्स के साथ आप उपयोगकर्ता को कई विकल्पों में से चुनने के लिए कह सकते हैं। हां/नहीं संदेश बॉक्स उपयोगकर्ता को हां या नहीं का चयन करने के लिए कहता है। आप उपयोगकर्ता से यह पूछने के लिए एक हां/नहीं संदेश बॉक्स जोड़ सकते हैं कि क्या वे प्रक्रिया को जारी रखना चाहते हैं या नहीं। यदि आप कथन का उपयोग करके उपयोगकर्ता के इनपुट को संभालते हैं।यहाँ व्यवहार में हाँ/नहीं संदेश बॉक्स है:
123456789101112 उप MsgBoxVariable ()मंद उत्तर पूर्णांक के रूप मेंउत्तर = MsgBox ("क्या आप जारी रखना चाहते हैं?", vbQuestion + vbYesNo)अगर उत्तर = वीबीहाँ तोसंदेश बॉक्स "हाँ"अन्यथासंदेश बॉक्स "नहीं"अगर अंतअंत उप

वीबीए अगर, एल्सइफ, एल्स इन एक्सेस वीबीए

इफ, एल्सइफ और एल्स फंक्शन एक्सेस वीबीए में ठीक उसी तरह काम करते हैं जैसे एक्सेल वीबीए में।

रिकॉर्डसेट में रिकॉर्ड हैं या नहीं, यह जांचने के लिए आप if स्टेटमेंट का उपयोग कर सकते हैं।

wave wave wave wave wave