एक्सेल वीबीए इंटरएक्टिव यूजरफॉर्म
नीचे हम एक कार्यक्रम देखेंगे एक्सेल VBA जो एक बनाता है इंटरैक्टिव उपयोगकर्ताफॉर्म। उपयोगकर्ताफॉर्म हम इस प्रकार दिखने जा रहे हैं:
स्पष्टीकरण: जब भी आप आईडी टेक्स्ट बॉक्स में कोई मान डालते हैं, तो एक्सेल वीबीए संबंधित रिकॉर्ड लोड करता है। जब आप संपादन / जोड़ें बटन पर क्लिक करते हैं, तो एक्सेल वीबीए शीट पर रिकॉर्ड संपादित करता है या जब आईडी अभी तक मौजूद नहीं है तो रिकॉर्ड जोड़ता है। साफ़ बटन सभी टेक्स्ट बॉक्स साफ़ करता है। बंद बटन उपयोगकर्ताफॉर्म बंद कर देता है।
इस उपयोगकर्ताफॉर्म को बनाने के लिए, निम्न चरणों को निष्पादित करें।
1. विजुअल बेसिक एडिटर खोलें। यदि प्रोजेक्ट एक्सप्लोरर दिखाई नहीं दे रहा है, तो देखें, प्रोजेक्ट एक्सप्लोरर पर क्लिक करें।
2. सम्मिलित करें, उपयोगकर्ताफॉर्म पर क्लिक करें। यदि टूलबॉक्स स्वचालित रूप से प्रकट नहीं होता है, तो व्यू, टूलबॉक्स पर क्लिक करें। आपकी स्क्रीन नीचे के रूप में स्थापित की जानी चाहिए।
3। लेबल, टेक्स्ट बॉक्स (शीर्ष पर सबसे पहले, पहले के नीचे दूसरा, और इसी तरह) और कमांड बटन जोड़ें। एक बार यह पूरा हो जाने के बाद, परिणाम पहले दिखाए गए उपयोगकर्ताफॉर्म की तस्वीर के अनुरूप होना चाहिए। उदाहरण के लिए, टूलबॉक्स से टेक्स्टबॉक्स पर क्लिक करके टेक्स्ट बॉक्स नियंत्रण बनाएं। इसके बाद, आप उपयोगकर्ताफॉर्म पर एक टेक्स्ट बॉक्स खींच सकते हैं।
4। आप नियंत्रणों के नाम और कैप्शन बदल सकते हैं। एक्सेल वीबीए कोड में नामों का उपयोग किया जाता है। कैप्शन वे हैं जो आपकी स्क्रीन पर दिखाई देते हैं। नियंत्रणों के नाम बदलने के लिए यह अच्छा अभ्यास है, लेकिन यह यहां जरूरी नहीं है क्योंकि हमारे पास इस उदाहरण में केवल कुछ नियंत्रण हैं। लेबल, टेक्स्ट बॉक्स और कमांड बटन के कैप्शन को बदलने के लिए, व्यू, प्रॉपर्टी विंडो पर क्लिक करें और प्रत्येक नियंत्रण पर क्लिक करें।
5. उपयोगकर्ताफॉर्म दिखाने के लिए, अपनी वर्कशीट पर एक कमांड बटन रखें और निम्न कोड लाइन जोड़ें:
UserForm1.Show
End Sub
अब हम सब UserForm_Initialize बनाने जा रहे हैं। जब आप उपयोगकर्ताफॉर्म के लिए शो विधि का उपयोग करते हैं, तो यह उप स्वचालित रूप से निष्पादित हो जाएगा।
6. विजुअल बेसिक एडिटर खोलें।
7. प्रोजेक्ट एक्सप्लोरर में, UserForm1 पर राइट क्लिक करें और फिर कोड देखें पर क्लिक करें।
8. बाएं ड्रॉप-डाउन सूची से उपयोगकर्ताफॉर्म चुनें। सही ड्रॉप-डाउन सूची से प्रारंभ करें चुनें।
9. निम्नलिखित कोड लाइन जोड़ें:
TextBox1.SetFocus
End Sub
स्पष्टीकरण: यह कोड लाइन पहले टेक्स्ट बॉक्स पर फ़ोकस सेट करती है क्योंकि यह वह जगह है जहां हम उपयोगकर्ताफॉर्म लोड होने पर प्रारंभ करना चाहते हैं।
हमने अब उपयोगकर्ताफॉर्म का पहला हिस्सा बनाया है। हालांकि यह पहले से ही साफ दिखता है, फिर भी जब हम आईडी टेक्स्ट बॉक्स में कोई मान दर्ज करते हैं या जब हम कमांड बटन में से किसी एक पर क्लिक करते हैं तो कुछ भी नहीं होगा।
10. प्रोजेक्ट एक्सप्लोरर में, UserForm1 पर राइट क्लिक करें और फिर कोड देखें पर क्लिक करें।
11. बाएं ड्रॉप-डाउन सूची से टेक्स्टबॉक्स 1 चुनें। दाएं ड्रॉप-डाउन सूची से बदलें चुनें।
12. निम्नलिखित कोड लाइन जोड़ें:
GetData
End Sub
13. प्रोजेक्ट एक्सप्लोरर में, UserForm1 पर डबल क्लिक करें।
14. संपादन / जोड़ें कमांड बटन पर डबल क्लिक करें।
15. निम्नलिखित कोड लाइन जोड़ें:
EditAdd
End Sub
16. साफ़ कमांड बटन पर डबल क्लिक करें।
17. निम्नलिखित कोड लाइन जोड़ें:
ClearForm
End Sub
स्पष्टीकरण: इन सबस्क कॉल अन्य subs हम एक सेकंड में बनाने जा रहे हैं।
18. बंद कमांड बटन पर डबल क्लिक करें।
19. निम्नलिखित कोड लाइन जोड़ें:
Unload Me
End Sub
स्पष्टीकरण: यह कोड लाइन उपयोगकर्ताफॉर्म को बंद कर देती है।
सबस बनाने का समय सब के बारे में अधिक जानने के लिए आप हमारे फंक्शन और सब अध्याय के माध्यम से जा सकते हैं। यदि आप जल्दी में हैं, तो बस निम्न सब को एक मॉड्यूल में रखें (विजुअल बेसिक एडिटर में, सम्मिलित करें, मॉड्यूल पर क्लिक करें)।
20। सबसे पहले, टाइप इंटीजर के तीन चर और बूलियन प्रकार के एक चर घोषित करें। सामान्य घोषणा अनुभाग (मॉड्यूल के शीर्ष पर) में चर घोषित करें। इस तरह आपको केवल एक बार चर घोषित करना होगा और आप उन्हें एकाधिक subs में उपयोग कर सकते हैं।
21. GetData उप जोड़ें।
If IsNumeric(UserForm1.TextBox1.Value) Then
flag = False
i = 0
id = UserForm1.TextBox1.Value
Do While Cells(i + 1, 1).Value <> ""
If Cells(i + 1, 1).Value = id Then
flag = True
For j = 2 To 3
UserForm1.Controls("TextBox" & j).Value = Cells(i + 1, j).Value
Next j
End If
i = i + 1
Loop
If flag = False Then
For j = 2 To 3
UserForm1.Controls("TextBox" & j).Value = ""
Next j
End If
Else
ClearForm
End If
End Sub
स्पष्टीकरण: यदि आईडी टेक्स्ट बॉक्स में संख्यात्मक मान होता है, तो एक्सेल वीबीए आईडी के लिए खोज करता है और संबंधित रिकॉर्ड लोड करता है। हम टेक्स्ट बॉक्स के माध्यम से आसानी से लूप करने के लिए नियंत्रण संग्रह का उपयोग करते हैं। यदि एक्सेल वीबीए आईडी नहीं ढूंढ पा रहा है (ध्वज अभी भी गलत है), यह दूसरे और तीसरे पाठ बॉक्स को खाली करता है। यदि आईडी टेक्स्ट बॉक्स में संख्यात्मक मान नहीं है, तो एक्सेल वीबीए ClearForm उप को कॉल करता है।
22. ClearForm उप जोड़ें।
For j = 1 To 3
UserForm1.Controls("TextBox" & j).Value = ""
Next j
End Sub
स्पष्टीकरण: एक्सेल वीबीए सभी टेक्स्ट बॉक्स साफ़ करता है।
23. EditAdd सब जोड़ें।
Dim emptyRow As Long
If UserForm1.TextBox1.Value <> "" Then
flag = False
i = 0
id = UserForm1.TextBox1.Value
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
Do While Cells(i + 1, 1).Value <> ""
If Cells(i + 1, 1).Value = id Then
flag = True
For j = 2 To 3
Cells(i + 1, j).Value = UserForm1.Controls("TextBox" & j).Value
Next j
End If
i = i + 1
Loop
If flag = False Then
For j = 1 To 3
Cells(emptyRow, j).Value = UserForm1.Controls("TextBox" & j).Value
Next j
End If
End If
End Sub
स्पष्टीकरण: यदि आईडी टेक्स्ट बॉक्स खाली नहीं है, तो एक्सेल वीबीए शीट पर रिकॉर्ड संपादित करता है (रिकॉर्ड को लोड करने के विपरीत जैसा हमने पहले देखा है)। यदि एक्सेल वीबीए आईडी नहीं ढूंढ सकता है (ध्वज अभी भी गलत है), तो यह रिकॉर्ड को खाली खाली पंक्ति में जोड़ता है। परिवर्तनीय खाली पंक्ति पहली खाली पंक्ति है और रिकॉर्ड हर बार बढ़ने पर बढ़ जाती है।
24. विजुअल बेसिक एडिटर से बाहर निकलें, पंक्ति 1 में नीचे दिखाए गए लेबल दर्ज करें और उपयोगकर्ताफॉर्म का परीक्षण करें।