मैंने पहले भी यह सवाल पूछा है, लेकिन एक भयानक तरीके से स्वीकार किया है, इसलिए मैं यह फिर से पूछ रहा हूं। इसलिए यहां मैं एक बार फिर हूं।
मैं वीबीए एक्सेल में एक कार्यक्रम बना रहा हूं - या बेहतर, कुछ कार्यों को कोड के कुछ हिस्सों के साथ एक वर्कशीट के साथ जोड़कर कुछ बनाने के लिए जो एक स्टैंड-अलोन प्रोग्राम की तरह काम करता है। इसके एक हिस्से में एक निश्चित मैक्रो पर कई छवियों (उनमें से दसियों) का बंधन शामिल है, क्लिक पर।
मैंने "डेवलपर" -> "डिज़ाइन मोड" बटन के माध्यम से उक्त छवियां बनाई हैं। छवियों को फैशन में नाम दिया गया है: Image1, Image2, Image3 ... आदि जो मैं चाहता हूं, यदि, उदाहरण के लिए, मैं Image1 दबाता हूं, तो सबरूटीन एक्शन (1) कहा जाता है। यदि मैं Image100 दबाता हूं, तो मैं चाहता हूं कि सबरूटीन एक्शन (100) को बुलाया जाए। इसलिए, मैं एक्शन सबरूटीन को उस मूल्य के अनुसार कॉल करना चाहता हूं जिसके अनुसार छवि को क्लिक किया गया है, उदाहरण में मैंने आपको इसके नाम के अनुसार दिया है।
त्वरित खोज के साथ, इस काम को करने का पहला तरीका मुझे पता चला:
Sub Image1_Click()
Call Action(1)
End Sub
यह Image1 पर एक क्लिक के लिए था। Image100 पर एक क्लिक के लिए, यह होगा:
Sub Image100_Click()
Call Action(100)
End Sub
पूरी तरह से इस तरह का उपयोग करने का नकारात्मक पक्ष स्पष्ट है: मुझे उन छवियों के रूप में कई ऑन-क्लिक हैंडलर बनाने की आवश्यकता होगी, भले ही हर बार एक ही दिनचर्या कहा जाता है और पास होने के लिए मूल्य प्राप्त करने के लिए सभी मायने रखती है वह छवि है नाम।
इसलिए, अपने तर्क का स्पष्ट क्रम और जो मैं प्राप्त करना चाहता हूं, उसे देखते हुए, मैं चाहूंगा कि आप मेरे सभी चित्रों के लिए ऑन-क्लिक ईवेंट बनाने के लिए एक अधिक चतुर तरीका प्रदान करें, बिना अतिरेक कोड और एक का उपयोग किए बिना। स्पष्ट रूप से इष्टतम तर्क नहीं।
नोट: भ्रम की स्थिति में, कार्रवाई सबरूटीन सभी छवियों के लिए समान है। केवल मान बदल गया है।