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

तो अगर
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 () बूलियन के रूप मेंट्रूफंक्शन = ट्रूअंत समारोह |

पाठ की तुलना करना
आप संख्याओं की तुलना के समान पाठ की तुलना भी कर सकते हैं:
पाठ की तुलना करते समय, आपको "केस" (ऊपरी या निचला) का ध्यान रखना चाहिए। डिफ़ॉल्ट रूप से, 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 स्टेटमेंट का उपयोग कर सकते हैं।
