वीबीए यूजरफॉर्म बनाना

वीबीए उपयोगकर्ताफॉर्म

उपयोगकर्ताफॉर्म वीबीए में प्रोग्रामिंग का एक बहुत ही महत्वपूर्ण हिस्सा है। यह आपको अपने वीबीए एप्लिकेशन के उपयोगकर्ताओं के साथ संवाद करने के लिए एक पेशेवर दिखने वाला यूजर इंटरफेस बनाने की अनुमति देता है। यह आपको उपयोगकर्ता को पूरी तरह से नियंत्रित करने की अनुमति देता है कि वे आपकी कार्यपुस्तिका में क्या कर रहे हैं।

बेशक, आप उपयोगकर्ता से पैरामीटर स्वीकार करने के लिए वर्कशीट सेल का उपयोग कर सकते हैं, लेकिन उपयोगकर्ताफॉर्म एक बेहतर उपयोगकर्ता अनुभव पैदा करता है।

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

सभी सामान्य विंडोज़ नियंत्रण, जैसे ड्रॉप डाउन, सूची बॉक्स, टिक बॉक्स आपके लिए उपलब्ध हैं। आपके पास उपयोगकर्ता अनुभव को बढ़ाने के लिए उपयोग करने के लिए विधियों, घटनाओं और गुणों की एक विस्तृत श्रृंखला भी है।

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

वीबीए यूजरफॉर्म में निर्मित

एक्सेल वीबीए कई अंतर्निर्मित रूपों के रूप में जिनका उपयोग उपयोगकर्ता के साथ संवाद करने के लिए किया जा सकता है।

संदेश पात्र

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

यह एक बुनियादी उदाहरण है। क्लिक करने के लिए केवल एक बटन है, और शीर्षक बार 'माइक्रोसॉफ्ट एक्सेल' कहता है

इसका उत्पादन करने के लिए कोड बहुत सीधा है:

123 उप टेस्टएमएसजीबॉक्स ()MsgBox "यह प्रक्रिया पूरी हो गई है"अंत उप

आप बटन, आइकन जोड़ने और शीर्षक बार बदलने के लिए विभिन्न मापदंडों का उपयोग कर सकते हैं

123456789 उप टेस्टएमएसजीबॉक्स ()डिम रिट ऐज़ वैरिएंटRet = MsgBox ("क्या आप सुनिश्चित हैं?", vbYesNo या vbQuestion, "मेरा आवेदन")अगर रिट = वीबीहां तो'आपकी प्रक्रिया यहाँ'अन्यथाउप से बाहर निकलेंअगर अंतअंत उप

यह कोड 'हां' और 'नहीं' बटन और एक प्रश्न चिह्न आइकन में जोड़ता है, और शीर्षक बार सेट करता है। ध्यान दें कि आप 'या' ऑपरेटर का उपयोग करके संदेश बॉक्स की शैलियों को जोड़ सकते हैं

साथ ही, जब आप किसी संदेश बॉक्स से कोई मान वापस कर रहे हों, तो वापसी चर को एक प्रकार या vbMsgBoxResult के रूप में परिभाषित किया जाना चाहिए, और संदेश बॉक्स कथन को ब्रैकेट का उपयोग करना चाहिए,

इनपुट बॉक्स

वीबीए में बनाया गया एक बहुत ही सरल इनपुट बॉक्स है, हालांकि आप इसके साथ क्या कर सकते हैं इसमें काफी प्रतिबंधात्मक है। यदि आप कर सकते हैं, तो कस्टम यूजरफॉर्म डिजाइन करना बेहतर है

12345 उप टेस्टइनपुटबॉक्स ()स्ट्रिंग के रूप में मंद रिटरिट = इनपुटबॉक्स ("कृपया अपना नाम दर्ज करें", "नाम दर्ज करें")MsgBox रेटअंत उप

आप पैरामीटर में इनपुट के लिए एक डिफ़ॉल्ट मान भी जोड़ सकते हैं।

फ़ाइल नाम खोलें

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

कोड उपयोगकर्ता को केवल एक्सेल फाइलों को देखने के लिए प्रतिबंधित करता है। दुर्भाग्य से, वे फ़ाइल नाम बॉक्स में एक गैर-एक्सेल फ़ाइल नाम टाइप कर सकते हैं, और खुले बटन पर क्लिक कर सकते हैं, इसलिए आपको यह सुनिश्चित करने के लिए कुछ कोड की आवश्यकता होगी कि एक एक्सेल फ़ाइल का चयन किया गया है।

फ़ाइल संवाद प्रदर्शित करने से पहले डिफ़ॉल्ट निर्देशिका को अपनी आवश्यकताओं में बदलने के लिए 'ChDir' कमांड का उपयोग करें

FileFilter पैरामीटर में वाइल्डकार्ड के उपयोग पर ध्यान दें। प्रदर्शित करने के लिए एक्सेल फाइलें 2007 से पहले की हो सकती हैं, मैक्रोज़ हो सकती हैं, या बाइनरी हो सकती हैं, इसलिए फ़िल्टर '.xls*' है।

123456 उप टेस्टफाइलडिअलॉग ()मंद MyFile स्ट्रिंग के रूप मेंChDir "सी: \ अस्थायी"MyFile = Application.GetOpenFilename("Excel Files (*.xls*),*.xls*", , "Select a file")MsgBox MyFileअंत उप

यदि आवश्यक हो, तो आप मल्टीसेलेक्ट पैरामीटर का उपयोग करके उपयोगकर्ता को एक साथ कई फाइलों का चयन करने की अनुमति दे सकते हैं। डिफ़ॉल्ट गलत है (केवल एकल चयन)

12345678 उप टेस्टफाइलडिअलॉग ()डिम माईफाइल वैरिएंट के रूप मेंChDir "सी: \ अस्थायी"MyFile = Application.GetOpenFilename("Excel Files (*.xls*),*.xls*", , "Select a file", , True)MyFile में प्रत्येक f के लिएसंदेशबॉक्स चअगला चअंत उप

उपयोगकर्ता एकाधिक फ़ाइलों का चयन करने के लिए फ़ाइल संवाद में Shift कुंजी दबाए रखता है।

प्रत्येक लूप के लिए चयनित प्रत्येक फ़ाइल का पूर्ण पथ और नाम प्रदर्शित करता है

एक्सेल डिफ़ॉल्ट संवाद

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

इसका एक अच्छा उदाहरण वीबीए से 'प्रिंट' संवाद प्रदर्शित करना है:

123 उप टेस्टप्रिंटडिअलॉग ()एप्लिकेशन। संवाद (xlDialogPrint)। दिखाएँअंत उप

जब आप संवाद संग्रह में कोष्ठक खोलते हैं, तो आप अंतर्निर्मित संवादों के लिए बड़ी संख्या में स्थिरांक की सूची देखेंगे। आपके कोड में इनमें से कुछ विकल्पों के साथ प्रयोग करना उचित है

एक नया उपयोगकर्ता प्रपत्र सम्मिलित करना

आप विजुअल बेसिक एडिटर (वीबीई) में यूजरफॉर्म डालकर अपने खुद के कस्टम यूजर फॉर्म डिजाइन कर सकते हैं।

आप इसे सम्मिलित करें का चयन करके करते हैं | वीबीई मेनू बार पर यूजरफॉर्म।

'यूजरफॉर्म' पर क्लिक करें और एक नया खाली फॉर्म दिखाई देगा जिसे आप विकसित करने के लिए तैयार हैं

वास्तविक रूप स्वयं ('UserForm1' के रूप में दिखाया गया है) काफी छोटा दिखता है, लेकिन आप अपने कर्सर के साथ हैंडल को खींचकर इसे बड़ा या छोटा करने के लिए इसके चारों ओर के हैंडल का उपयोग कर सकते हैं।

स्क्रीन के निचले बाएँ कोने में एक गुण विंडो है। चूंकि फोकस सीधे फॉर्म पर ही होता है, इसमें उस फॉर्म के लिए विशिष्ट फॉर्म के सभी गुण शामिल होते हैं।

ध्यान दें कि जब आप कॉम्बो बॉक्स और कमांड बटन जैसे नियंत्रण जोड़ना शुरू करते हैं, तो इन सभी नियंत्रणों में गुणों का अपना सेट होता है, और उनमें से प्रत्येक के साथ आप जो कर सकते हैं उसमें वे बहुत भिन्न हो सकते हैं।

वर्तमान में आप जो गुण देखते हैं, वे केवल प्रपत्र पर ही लागू होते हैं।

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

'नाम' संपत्ति स्क्रीन के ऊपरी बाएं कोने में 'प्रोजेक्ट एक्सप्लोरर' विंडो के माध्यम से भी दिखाई देगी

आप अपने फॉर्म के टाइटल बार को 'UserForm1' से कुछ अलग करना चाहेंगे, और आप 'कैप्शन' प्रॉपर्टी पर अपना नया टेक्स्ट टाइप करके ऐसा कर सकते हैं।

उपयोगकर्ता द्वारा आपका फ़ॉर्म कैसे देखा जाता है, इसमें आप बड़ी संख्या में परिवर्तन कर सकते हैं। आप रंग बदल सकते हैं, चित्र जोड़ सकते हैं उदा। एक कॉर्पोरेट लोगो, 'बाएं' और 'शीर्ष' का उपयोग करके स्थिति बदलें, 'ऊंचाई' और 'चौड़ाई' का उपयोग करके आकार बदलें, माउस पॉइंटर बदलें, और बहुत कुछ

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

टूलबॉक्स का उपयोग करना

आप देखेंगे कि जब आप फॉर्म पर ही क्लिक करते हैं, तो एक टूलबॉक्स पॉप-अप दिखाई देता है। यदि आप कहीं और क्लिक करते हैं उदा। गुण फलक, यह गायब हो जाएगा, लेकिन जब आप फॉर्म पर क्लिक करेंगे तो फिर से दिखाई देंगे।

टूलबॉक्स प्रपत्र डिज़ाइन के वास्तविक यांत्रिकी प्रदान करता है। यह आपको उन सामान्य विंडोज़ नियंत्रणों को जोड़ने में सक्षम बनाता है जिनसे उपयोगकर्ता आपके फ़ॉर्म से परिचित हैं।

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

यदि आप किसी नियंत्रण पर क्लिक करते हैं, और फिर उसका उपयोग नहीं करने का निर्णय लेते हैं, तो टूलबॉक्स के ऊपरी-बाएँ कोने में 'तीर' आइकन पर क्लिक करने से आपका कर्सर वापस सामान्य हो जाएगा।

आप टूल का उपयोग करके टूलबॉक्स में अतिरिक्त नियंत्रण जोड़ सकते हैं | वीबीई मेनू पर अतिरिक्त नियंत्रण। इनमें से काफी संख्या में उपलब्ध हैं, लेकिन आपके विंडोज और एक्सेल संस्करणों के आधार पर, वे हमेशा काम नहीं करते हैं इसलिए अक्सर कुछ प्रयोग की आवश्यकता होती है।

साथ ही, हो सकता है कि आपके उपयोगकर्ताओं के पास इनमें से कुछ अतिरिक्त नियंत्रणों तक पहुंच न हो या वे Windows और Excel के पुराने संस्करण चला रहे हों, जिससे समस्याएँ हो सकती हैं। बड़े संगठनों में, खासकर यदि वे वैश्विक हैं, तो मानक बिल्ड पीसी जैसी कोई चीज नहीं है जिस पर आप भरोसा कर सकें!

अपने फॉर्म में एक्जिट बटन जोड़ना

प्रपत्र में जोड़ने के लिए एक कमांड बटन सरल है। यह वैसे ही दिखता है जैसे बटन आप अन्य विंडोज़ रूपों में देखते हैं, आमतौर पर 'ओके' या 'रद्द करें' बटन के रूप में।

टूलबॉक्स में कमांड बटन आइकन पर क्लिक करें। यह आइकनों की निचली पंक्ति में बाईं ओर से दूसरा आइकन है। ऊपर की छवि देखें। इस पर 'अब' अक्षर हैं।

आप या तो अपने माउस बटन को दबाए रख सकते हैं और नियंत्रण को अपने फॉर्म पर खींच सकते हैं, या आप कर्सर को फॉर्म में ले जा सकते हैं, जहां यह एक 'क्रॉस' कर्सर में बदल जाएगा और आप अपने बटन को स्थिति और आकार दे सकते हैं

यदि आप नियंत्रण को प्रपत्र पर खींचते हैं, तो आपको बटन का डिफ़ॉल्ट आकार मिलेगा। कर्सर को फ़ॉर्म में ले जाने से आप 'क्रॉस' कर्सर को अपने फ़ॉर्म में खींचकर बटन का आकार बदल सकते हैं

अब आपका फॉर्म इस तरह दिखेगा:

बटन में कैप्शन के रूप में डिफ़ॉल्ट टेक्स्ट होगा, लेकिन आप इसे अपनी आवश्यकताओं के अनुसार बदलना चाहेंगे। आप बटन के भीतर टेक्स्ट पर क्लिक कर सकते हैं ('कमांडबटन 1') और यह आपको सीधे कैप्शन को संपादित करने की अनुमति देगा।

आप इसे गुण विंडो (स्क्रीन के निचले बाएं कोने) में भी बदल सकते हैं। आपको 'कैप्शन' नामक एक संपत्ति दिखाई देगी और आप इसके लिए मूल्य संपादित कर सकते हैं। इसे 'बाहर निकलें' में बदलें

प्रपत्र गुणों के साथ, 'नाम' संपत्ति उस नाम को परिभाषित करती है जिसका उपयोग आपके वीबीए कोड में किया जाएगा। आप एक ऐसे नाम का उपयोग करना चाह सकते हैं जो आपके कोड में अधिक अर्थपूर्ण और स्पष्ट हो। आप इसे 'नाम' संपत्ति के सामने दर्ज कर सकते हैं।

आप बटन को फॉर्म पर खींचकर फिर से स्थिति में ला सकते हैं, और आप बटन हैंडल (सफेद वर्ग बॉक्स) पर क्लिक करके और इसे बड़ा या छोटा करने के लिए हैंडल को खींचकर इसका आकार बदल सकते हैं।

आप गुण विंडो में ऊँचाई और चौड़ाई मानों को बदलकर बटन को फिर से आकार दे सकते हैं

आप VBE टूलबार में हरे त्रिकोण पर क्लिक करके या F5 दबाकर एक्सेल में अपना फॉर्म देख सकते हैं

आप 'दिखाएँ' पद्धति का उपयोग करके एक मॉड्यूल के भीतर वीबीए कोड से अपना फॉर्म कॉल कर सकते हैं

123 उप शोफॉर्म ()UserForm1.दिखाएँअंत उप

आपका उपयोगकर्ता प्रपत्र प्रभावी रूप से एक वैश्विक वस्तु है और इसे आपके कोड में कहीं से भी बुलाया जा सकता है

वर्तमान में, आपका कमांड बटन कुछ नहीं करता है क्योंकि इसके पीछे कोई VBA कोड नहीं है। यह आपको खुद ही लिखना होगा! इस समय जो कुछ भी हो सकता है, वह यह है कि आप अपने फॉर्म के ऊपरी दाएं कोने में 'बंद करें' X पर क्लिक कर सकते हैं।

VBA कोड जोड़ने के लिए, फॉर्म के बटन पर डबल क्लिक करें

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

आप प्रपत्र को बंद करने के लिए 'छिपाएं' विधि का उपयोग करते हैं, और आप किसी अन्य कोड में भी जोड़ सकते हैं, जैसे कि संदेश बॉक्स में उपयोगकर्ता को यह पुष्टि करने के लिए कि क्या हुआ है।

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

जब आप अपना फॉर्म अभी चलाते हैं, तो बटन वास्तव में कुछ करता है। प्रपत्र गायब हो जाता है और प्रपत्र बंद होने की पुष्टि करते हुए एक संदेश बॉक्स प्रदर्शित होता है

बेशक, आप निकास कोड को बड़ा कर सकते हैं। हो सकता है कि आप कोई अन्य प्रपत्र प्रदर्शित करना चाहें, या उपयोगकर्ता द्वारा आपके प्रपत्र में दर्ज किए गए पैरामीटर पर कार्रवाई करना चाहें

किसी प्रपत्र में लेबल नियंत्रण जोड़ना

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

एक नियंत्रण के रूप में, वे केवल उपयोगकर्ता के लिए पढ़े जाते हैं और फॉर्म पर टेक्स्ट डालने का एक तरीका है, चाहे वह बोल्ड हेडिंग हो, या क्या दर्ज करना है या क्या चुनना है।

एक लेबल जोड़ने के लिए, टूलबॉक्स में 'ए' आइकन पर क्लिक करें (शीर्ष पंक्ति, बाएं से दूसरा) और या तो उस पर डबल क्लिक करें या अपने कर्सर को फॉर्म में ले जाएं और स्थिति और आकार चुनें।

गुण विंडो में 'कैप्शन' गुण का उपयोग करके, या लेबल नियंत्रण पर क्लिक करके, आप लेबल नियंत्रण के लिए पाठ दर्ज कर सकते हैं।

ध्यान दें कि टेक्स्ट लेबल नियंत्रण के आकार के अनुसार लपेटेगा, और यदि टेक्स्ट की स्ट्रिंग बहुत लंबी है, तो यह पूरी तरह से फ़ॉर्म पर दिखाई नहीं देगी, इसलिए आपको लेबल नियंत्रण के आकार से सावधान रहने की आवश्यकता है।

प्रॉपर्टीज विंडो का उपयोग करके, आप विभिन्न रंगों, फोंट, बैक स्टाइल जैसे लेबल नियंत्रण की उपस्थिति को बदल सकते हैं। अगर यह एक छवि को ओवरले करता है और आप इसे पारदर्शी बनाना चाहते हैं

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

फॉर्म में टेक्स्ट कंट्रोल जोड़ना

उपयोगकर्ता को टेक्स्ट इनपुट करने की अनुमति देने के लिए टेक्स्ट कंट्रोल का उपयोग किया जाता है जैसे नाम या टिप्पणियां दर्ज करना

टेक्स्ट कंट्रोल आइकन (शीर्ष पंक्ति, बाएं से तीसरा) पर क्लिक करके टूलबॉक्स से टेक्स्ट कंट्रोल को जोड़ा जाता है और नियंत्रण को आपके फॉर्म पर स्थिति में डबल क्लिक या ड्रैग करके जोड़ा जाता है।

टेक्स्ट नियंत्रण अक्सर लेबल नियंत्रण के साथ भ्रमित होता है, लेकिन टेक्स्ट नियंत्रण उपयोगकर्ता इनपुट के लिए होता है

जैसा कि पहले बताया गया है, 'अपना नाम दर्ज करें' टेक्स्ट एक लेबल नियंत्रण है, और अब हमारे पास उपयोगकर्ता के लिए कुछ टाइप करने के लिए एक सफेद टेक्स्ट बॉक्स तैयार है।

गुण विंडो का उपयोग करके, आप अपने टेक्स्ट बॉक्स के लिए रंग, फ़ॉन्ट, विशेष प्रभाव बदल सकते हैं या पासवर्ड वर्णों का उपयोग कर सकते हैं। अत्यधिक लचीलापन उपलब्ध है

टेक्स्ट बॉक्स के लिए एक बहुत ही महत्वपूर्ण संपत्ति 'मल्टीलाइन' संपत्ति है। यदि आप चाहते हैं कि उपयोगकर्ता टेक्स्ट नियंत्रण में बड़ी मात्रा में टेक्स्ट दर्ज करे उदा। टिप्पणियाँ, फिर 'मल्टीलाइन' संपत्ति को सही पर सेट किया जाना चाहिए।

यह गलत का एक डिफ़ॉल्ट है जिसका अर्थ है कि आप अपना टेक्स्ट बॉक्स कितना भी बड़ा बना लें, दर्ज किया गया टेक्स्ट एक सतत लाइन पर रहेगा और टेक्स्ट बॉक्स से बाहर स्क्रॉल करेगा। यह बॉक्स के भीतर नहीं लपेटेगा।

जब आप अपने टेक्स्ट बॉक्स पर राइट क्लिक करते हैं तो कोई पॉप-अप नहीं होता है, लेकिन CTRL + V पेस्ट के लिए काम करेगा, और CTRL + C कट के लिए काम करेगा, क्या उपयोगकर्ता टेक्स्ट को दूसरे से और से कट और पेस्ट करना चाहता है। अनुप्रयोग

फिर से, उपयोगकर्ता द्वारा टाइप किए गए टेक्स्ट से निपटने के लिए आपको अपना कोड लिखना होगा। आप इसे वर्कशीट में एक सेल में स्थानांतरित करना चाह सकते हैं।

आप इस कोड को टेक्स्ट बॉक्स के 'चेंज' इवेंट में जोड़ सकते हैं

123 निजी उप टेक्स्टबॉक्स1_चेंज ()शीट्स ("शीट 1")। रेंज ("ए 1")। वैल्यू = टेक्स्टबॉक्स 1. वैल्यूअंत उप

आप यह जांचने के लिए कुछ सत्यापन कोड भी डाल सकते हैं कि उपयोगकर्ता कचरे में प्रवेश नहीं कर रहा है जिसका आपके आवेदन पर विनाशकारी प्रभाव पड़ेगा

परिवर्तन घटना इसके लिए अच्छी नहीं है क्योंकि इसे हर बार उपयोगकर्ता द्वारा एक नए चरित्र में टाइप करने पर कहा जाता है। उपयोगकर्ता टेक्स्ट की एक स्ट्रिंग टाइप करना शुरू कर सकता है और तुरंत पता लगा सकता है कि उन्होंने वैध टेक्स्ट पूरा करने से पहले आपके सत्यापन नियमों को तोड़ दिया है।

आप 'बाहर निकलें' ईवेंट का उपयोग करते हैं। यह तब ट्रिगर होता है जब उपयोगकर्ता फ़ोकस को प्रपत्र पर किसी अन्य नियंत्रण पर ले जाता है, जिसका अर्थ है कि उपयोगकर्ता अब डेटा दर्ज नहीं कर रहा है।

123456 निजी उप टेक्स्टबॉक्स 1_Exit (ByVal MSForms के रूप में रद्द करें। रिटर्नबूलियन)यदि IsNull(TextBox1.Value) या Len(TextBox1.Value) <4 तोMsgBox "नाम अमान्य है", vbcriticalटेक्स्टबॉक्स1.सेटफोकसअगर अंतअंत उप

जब उपयोगकर्ता प्रपत्र पर किसी अन्य नियंत्रण पर क्लिक करता है, तो यह कोड टेक्स्ट बॉक्स में शून्य मान या 4 वर्णों से कम के लिए परीक्षण करता है। यदि परीक्षण सत्य है, तो एक महत्वपूर्ण आइकन वाला एक संदेश बॉक्स उपयोगकर्ता को सूचित करता है कि नाम अमान्य है, और उपयोगकर्ता को ठीक करने के लिए ध्यान वापस आपत्तिजनक टेक्स्ट बॉक्स पर ले जाया जाता है।

ध्यान दें कि भले ही उपयोगकर्ता बाहर निकलें बटन पर क्लिक करता है, टेक्स्ट बॉक्स से बाहर निकलने की घटना पहले की जाएगी, इसलिए यह उपयोगकर्ता को इनपुट को सही किए बिना बाहर निकलने से रोकता है

किसी प्रपत्र पर ईवेंट प्रारंभ और सक्रिय करें

जब VBA पहली बार एक फॉर्म बनाता है और बनाता है तो यह एक 'इनिशियलाइज़' ईवेंट को ट्रिगर करता है। हालाँकि, क्योंकि इस बिंदु पर प्रपत्र भी प्रदर्शित होता है, यह एक 'सक्रिय' घटना को भी ट्रिगर करता है। तब से, हर बार जब प्रपत्र 'दिखाएँ' पद्धति का उपयोग करते हुए प्रकट होता है या यह प्रपत्रों के पदानुक्रम के भाग के रूप में प्रकट होता है, तब 'सक्रिय करें' ईवेंट ट्रिगर होता है, लेकिन 'प्रारंभिक' ईवेंट नहीं

'इनिशियलाइज़' इवेंट केवल एक बार होता है, लेकिन 'एक्टिवेट' इवेंट कई बार हो सकता है

अपने प्रपत्र पर आप इनपुट नियंत्रणों में कार्यपत्रक से डिफ़ॉल्ट मान सेट करना चाह सकते हैं उदा। टेक्स्ट बॉक्स, ताकि ये फॉर्म के पहले उपयोग पर दिखाई दें, लेकिन उपयोगकर्ता डिफ़ॉल्ट को अधिलेखित कर सकता है और ये नए मान तब तक बने रहेंगे जब तक कोड चल रहा है

12345678 निजी उप UserForm_Initialize ()टेक्स्टबॉक्स 1. वैल्यू = शीट्स ("शीट 1")। रेंज ("ए 1")। वैल्यू:यदि TextBox1.Value="” तोTextBox1.Visible=Falseअन्यथाTextBox1.Visible=Trueअगर अंतअंत उप

आप कोड विंडो में दूसरे ड्रॉप डाउन में 'इनिशियलाइज़' इवेंट और पहले ड्रॉप डाउन में यूजरफॉर्म नाम पा सकते हैं।

यह कोड इस आलेख में पहले बनाए गए टेक्स्ट बॉक्स में डिफ़ॉल्ट मान के रूप में 'शीट 1' पर सेल ए 1 पर मान का उपयोग करेगा। जब प्रपत्र पहली बार प्रकट होता है, तो डिफ़ॉल्ट मान दिखाई देगा। उपयोगकर्ता तब डिफ़ॉल्ट मान को अधिलेखित कर सकता है और इसे बरकरार रखा जाएगा। यदि CellA1 खाली है तो टेक्स्ट बॉक्स छुपाया जाएगा अन्यथा दिखाई देगा

डिफ़ॉल्ट मान को हार्ड कोडित भी किया जा सकता है:

1 TextBox1.Value = "जॉन स्मिथ"

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

123 निजी उप टेक्स्टबॉक्स1_Exit(ByVal रद्द MSForms.ReturnBoolean के रूप में)शीट्स ("शीट 1")। रेंज ("ए 10")। वैल्यू = टेक्स्टबॉक्स 1. वैल्यूअंत उप
123 निजी उप UserForm_Activate ()टेक्स्टबॉक्स 1. वैल्यू = शीट्स ("शीट 1")। रेंज ("ए 10")। वैल्यू:अंत उप

यह कोड उपयोगकर्ता के मूल्यों को स्थिर बनाएगा और यह भी सुनिश्चित करेगा कि वे शेष कार्यपुस्तिका के साथ सहेजे गए हैं

आपका आवेदन और प्रपत्र सहेजा जा रहा है

जब आप अपनी एक्सेल कार्यपुस्तिका को अपने प्रपत्रों के साथ सहेजते हैं, तो सभी प्रपत्र और उनका VBA कोड भी सहेज लिया जाता है। हालाँकि, प्रदर्शित होने के दौरान प्रपत्रों में मौजूद कोई भी मान खो जाएगा।

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

मोडल और नॉन-मोडल फॉर्म

फॉर्म में ही एक संपत्ति 'शो मोडल' है। यह डिफ़ॉल्ट रूप से सही पर सेट है, लेकिन इसे गलत (गैर-मोडल) में बदला जा सकता है

यदि कोई प्रपत्र मोडल है, तो इसका अर्थ है कि प्रपत्र प्रदर्शित होने के दौरान किसी भी Excel कार्यक्षमता तक पहुँचा नहीं जा सकता है। इसमें वीबीई विंडो में आपका कोड शामिल है। आप कोड देख सकते हैं, लेकिन कर्सर और कीबोर्ड अक्षम हैं।

एक गैर-मोडल रूप में, आप वीबीई विंडो सहित सभी एक्सेल कार्यक्षमता तक पहुंच सकते हैं, जबकि फॉर्म प्रदर्शित किया जा रहा है।

उपयोगकर्ता व्यवहार को नियंत्रित करने की दृष्टि से यह महत्वपूर्ण है

एक फॉर्म बंद करना

चाहे आप उपयोगकर्ता को एक निश्चित मार्ग पर जाने के लिए मजबूर करने के लिए अपना कोड लिखें, वे फॉर्म के ऊपरी दाएं कोने में 'बंद' X पर क्लिक करके आसानी से इसे दरकिनार कर सकते हैं

आप प्रपत्र के 'QueryClose' ईवेंट को संशोधित करके ऐसा होने से रोक सकते हैं

1234 निजी उप UserForm_QueryClose (पूर्णांक के रूप में रद्द करें, पूर्णांक के रूप में बंद करें)रद्द करें = सत्यMsgBox "यह क्रिया अक्षम है"अंत उप

जब उपयोगकर्ता प्रपत्र के 'बंद' X पर क्लिक करता है, तो 'क्वेरीक्लोज़' घटना शुरू हो जाती है। यह कोड कार्रवाई को रद्द कर देता है, इसलिए उपयोगकर्ता को आपके 'बाहर निकलें' बटन और उसके पीछे आपके कोड का उपयोग करने के लिए मजबूर किया जाता है।

नियंत्रणों को सक्षम और अक्षम करना

आपके फ़ॉर्म के सभी नियंत्रणों में 'सक्षम' नामक एक संपत्ति होती है जो सही या गलत पर सेट होती है। यदि यह गलत है, तो नियंत्रण धूसर हो जाता है। इसे देखा जा सकता है लेकिन इस्तेमाल नहीं किया जा सकता।

'विज़िबल' नाम की एक प्रॉपर्टी भी होती है जिसे फिर से सही या गलत पर सेट किया जाता है।

आप एक निश्चित नियंत्रण को अनुपयोगी बनाने के लिए या उपयोगकर्ता के लिए इसे पूरी तरह से अदृश्य बनाने के लिए कोड लिख सकते हैं। एक 'अगर' कथन का उपयोग करके, आप उन परिस्थितियों को चुन सकते हैं जब आपको ऐसा करने की आवश्यकता हो

उदाहरण के लिए, आप प्रारंभ में 'बाहर निकलें' बटन को अक्षम कर सकते हैं, जब तक कि उपयोगकर्ता ने टेक्स्टबॉक्स 1 (नाम) में कोई मान दर्ज नहीं किया हो।

123 निजी उप UserForm_Initialize ()CommandButton1.Enabled = Falseअंत उप
1234567 निजी उप टेक्स्टबॉक्स1_चेंज ()यदि लेन (टेक्स्टबॉक्स १.वैल्यू) > ० तोCommandButton1.Enabled = Trueअन्यथाCommandButton1.Enabled = Falseअगर अंतअंत उप

यह कोड एक्जिट बटन (कमांड बटन 1) को अक्षम करने के लिए फॉर्म 'इनिशियलाइज़' ईवेंट का उपयोग करता है, जब फॉर्म पहली बार दिखाई देता है और फिर टेक्स्टबॉक्स 1 (नाम) पर 'चेंज' इवेंट का उपयोग करता है, अगर कुछ टाइप किया गया है या अक्षम किया गया है, तो एग्जिट बटन को सक्षम करने के लिए। यह अगर बॉक्स खाली है।

हर बार जब कोई नया अक्षर टाइप किया जाता है या टेक्स्ट बॉक्स से हटा दिया जाता है तो 'चेंज' ईवेंट ट्रिगर हो जाता है। यदि उपयोगकर्ता बटन को सक्षम करने के लिए टेक्स्ट दर्ज करने का प्रयास करता है, और फिर सभी टेक्स्ट हटा देता है, तो बटन तुरंत अक्षम हो जाएगा

wave wave wave wave wave