में ऑब्जेक्ट सरणी या संग्रह मैं एक्सेल में ऑब्जेक्ट्स की एक सरणी रखना चाहता हूं जो एक ईवेंट हैंडलर को कॉल करता है। विशेष रूप से मेरे पास कई बटन हैं जो अलग-अलग कोशिकाओं में एक ही फ़ंक्शन करते हैं, और डुप्लिकेटिंग कोड से बने रहने के लिए, मैं बस इन बटन ऑब्जेक्ट्स को इंडेक्स (जैसे मैं वीबी 6.0 में करता था) के माध्यम से संदर्भित करना चाहता हूं .... कौन सा बटन ढूंढकर क्लिक किया गया था मैं विशिष्ट कोशिकाओं आदि को पॉप्युलेट करना चाहता हूं, इसलिए सवाल यह है कि एक्सेल वीबीए में बटनों की एक सरणी? मैंने वीबीनेट में थोड़ा काम किया है जहां मैंने संग्रह का उपयोग किया था, और यह अच्छी तरह से काम करता था ... लेकिन ऐसा प्रतीत होता है कि मैं वीबीए में ऐसा नहीं कर सकता।वीबीए एक्सेल
उत्तर
सामान्य कोड को एक ही विधि में अलग करें और सेल को पैरामीटर के रूप में पास करें। प्रत्येक बटन को अपनी स्वयं की घटना विधि असाइन करें, जो बदले में पैरामीटर के रूप में संपादित करने के लिए विशिष्ट सेल के साथ सामान्य विधि को कॉल करता है। कुछ ऐसा:
Private Sub CommonMethod(someCell as String)
' Do your stuff
Range(someCell).Value = something
End Sub
इसलिए प्रत्येक बटन को अपनी विधि के लिए असाइन किया जा सकता है। यह पहले से ही बनाया गया है इसलिए इसे फिर से बनाने की कोशिश न करें, इसे सरल रखें।
Private Sub Button1_Click()
CommonMethod("A1");
End Sub
Private Sub Button2_Click()
CommonMethod("A2");
End Sub
वीबीए में कोई नियंत्रण एरे नहीं हैं जैसे वीबी में हैं। कुछ नियंत्रणों के लिए आप घटनाओं को संभालने के लिए एक कस्टम क्लास बना सकते हैं। उदाहरण के लिए, मान लें कि आपके पास दो कमांड बटन वाले उपयोगकर्ताफॉर्म हैं। userform मॉड्यूल में इस कोड को
Private mcolEventButtons As Collection
Private Sub UserForm_Initialize()
Dim clsEventButton As CEventButton
Set mcolEventButtons = New Collection
Set clsEventButton = New CEventButton
Set clsEventButton.EventButton = Me.CommandButton1
clsEventButton.RangeAddress = "A1"
mcolEventButtons.Add clsEventButton, Me.CommandButton1.Name
Set clsEventButton = New CEventButton
Set clsEventButton.EventButton = Me.CommandButton2
clsEventButton.RangeAddress = "A10"
mcolEventButtons.Add clsEventButton, Me.CommandButton2.Name
End Sub
फिर CEventButton नामक कस्टम वर्ग मॉड्यूल बनाने के रख दिया और इस कोड को
Private WithEvents mctlEventButton As MSForms.CommandButton
Private msRangeAddress As String
Public Property Set EventButton(ctlButton As MSForms.CommandButton)
Set mctlEventButton = ctlButton
End Property
Public Property Get EventButton() As MSForms.CommandButton
Set EventButton = mctlEventButton
End Property
Private Sub mctlEventButton_Click()
Sheet1.Range(Me.RangeAddress).Value = "Something"
End Sub
Public Property Get RangeAddress() As String
RangeAddress = msRangeAddress
End Property
Public Property Let RangeAddress(ByVal sRangeAddress As String)
msRangeAddress = sRangeAddress
End Property
चर आयाम चुनाव में WithEvents कीवर्ड CommandButton की घटनाओं और आग बस के रूप में करता है, तो यह एक विशेष नियंत्रण और उपयोगकर्ता प्रारूप मॉड्यूल में बंधे थे।
यहां बताया गया है कि आपने क्या किया है: जब तक उपयोगकर्ताफॉर्म सक्रिय नहीं है तब तक आपने अपनी कस्टम कक्षा के उदाहरणों को पकड़ने के लिए एक संग्रह बनाया है। यह सुनिश्चित करता है कि उन उदाहरणों में गुंजाइश रहें। फिर आपने कक्षा का एक नया उदाहरण बनाया, इसे एक विशेष बटन सौंपा, और इसे संग्रह में सहेजा। आपने अगले बटन के लिए भी ऐसा ही किया। इस उदाहरण में केवल दो बटन हैं, लेकिन यदि आपके पास अधिक था तो आप इसे तब तक जारी रख सकते हैं जब तक कि आप स्मृति से बाहर नहीं हो जाते।
मैं एक उदाहरण के रूप में कस्टम क्लास मॉड्यूल में एक रेंज एड्रेस संपत्ति बनाते हैं। स्टोर करने के लिए आपको कौन सी जानकारी की आवश्यकता होगी, वह उस पर निर्भर करेगा जो आप अंततः पूरा करने की कोशिश कर रहे हैं।
इस उदाहरण के लिए काम करने के लिए, आपको उपयोगकर्ता के शोमोडल प्रॉपर्टी को FALSE पर सेट करने की आवश्यकता है, कमांडबटन 1 और कमांडबटन 2 नामक कमांडबूटन को, शीट 1 के कोडनाम के साथ एक शीट है, और शायद कुछ अन्य सामान।
- 1. एक्सेल वीबीए
- 2. एक्सेल वीबीए
- 3. एक्सेल वीबीए
- 4. एक्सेल वीबीए
- 5. एक्सेल वीबीए
- 6. वीबीए (एक्सेल)
- 7. वीबीए (एक्सेल)
- 8. एक्सेल वीबीए
- 9. एक्सेल वीबीए
- 10. एक्सेल वीबीए
- 11. एक्सेल वीबीए
- 12. एक्सेल वीबीए
- 13. एक्सेल वीबीए
- 14. एक्सेल वीबीए
- 15. एक्सेल वीबीए
- 16. एक्सेल वीबीए
- 17. एक्सेल वीबीए
- 18. एक्सेल वीबीए
- 19. एक्सेल वीबीए - वर्कबुकबेयरसेव इवेंट
- 20. वीबीए बनाम एक्सेल
- 21. वीबीए (एक्सेल 2007)
- 22. एक्सेल वीबीए वेक्टर
- 23. एक्सेल में वीबीए
- 24. एक्सेल वीबीए - लूप
- 25. एक्सेल वीबीए - तालिका
- 26. एक्सेल वीबीए मैक्रो
- 27. एक्सेल वीबीए मैक्रो
- 28. एक्सेल वीबीए एपीआई
- 29. क्या एक्सेल वीबीए VB.NET
- 30. एक्सेल वीबीए: एक्सेल मैक्रो एक PowerPoint