Я задавал этот вопрос раньше, но по общему признанию ужасным образом, поэтому я спрашиваю это снова. Вот и я снова.
Я делаю программу в VBA Excel - или лучше, комбинируя определенный рабочий лист с действиями и частями кода, чтобы создать что-то, что работает как отдельная программа. Часть этого включает в себя привязку нескольких изображений (десятки из них) к определенному макросу по щелчку.
Я создал указанные изображения с помощью кнопки "Разработчик" -> "Режим разработки". Изображения называются так: Image1, Image2, Image3 ... и т.д. Что мне нужно, если, например, я нажимаю Image1, вызывается подпрограмма Action(1). Если я нажму Image100, я хочу вызвать подпрограмму Action(100). Поэтому я хочу вызвать подпрограмму Action, передавая значение, в соответствии с которым щелкается изображение, в приведенном мной примере, в соответствии с его именем.
При быстром поиске первым способом, который я нашел, чтобы сделать эту работу, был следующий:
Sub Image1_Click()
Call Action(1)
End Sub
Это было для клика на Image1. Для клика на Image100 это будет:
Sub Image100_Click()
Call Action(100)
End Sub
Недостаток использования только этого способа очевиден: мне нужно создать столько обработчиков нажатий, сколько у меня есть изображений, хотя каждый раз вызывается одна и та же процедура, и все, что важно для получения передаваемого значения, - это изображение название.
Итак, учитывая очевидный порядок моей логики и того, чего я хочу достичь, я хотел бы, чтобы вы предоставили мне более умный способ создания событий нажатия для всех моих изображений без необходимости использовать слишком много избыточного кода и явно неоптимальная логика.
ПРИМЕЧАНИЕ. В случае путаницы подпрограмма «Действие» одинакова для всех изображений. Изменяется только переданное значение.