Я поставив це питання раніше, але, звісно, в жахливому порядку, тому я запитую це знову. Так ось я ще раз.
Я роблю програму в VBA Excel - або краще, поєднуючи певний аркуш з діями і частинами коду, щоб зробити те, що працює як окрема програма. Частина з них передбачає прив'язування ряду зображень (десятки з них) до певного макросу, при натисканні.
Ці зображення було створено за допомогою кнопки "Розробник" - "Режим розробки". Зображення називаються в моді: Image1, Image2, Image3 ... і т.д. Я хочу, щоб, наприклад, натиснути Image1, викликається підпрограма Action (1). Якщо натиснути Image100, я хочу викликати підпрограму Action (100). Тому, я хочу викликати Action Subroutine, передаючи значення, відповідно до якого натискається зображення, у прикладі, який я дав вам, відповідно до його назви.
З швидким пошуком, перший спосіб, який я зрозумів, щоб зробити цю роботу, була нижчою:
Sub Image1_Click()
Call Action(1)
End Sub
Це було для клацання на Image1. Для кліку на Image100 це буде:
Sub Image100_Click()
Call Action(100)
End Sub
Недоліком використання лише цього способу є очевидний: мені потрібно створити стільки обробників натискань, скільки зображень, які я маю, навіть якщо одна й та сама процедура називається кожного разу, і все, що має значення, щоб отримати значення, яке буде передано, це зображення ім'я.
Отже, з огляду на очевидний порядок моєї логіки і того, що я хочу досягти, я хотів би, щоб ви надали мені більш розумний спосіб створення подій, які можна натискати, для всіх своїх зображень, не використовуючи стільки надлишкового коду і явно не оптимальна логіка.
ПРИМІТКА: У разі незрозумілості, підпрограма Action IS однакова для всіх зображень. Змінено лише значення.