1

Я хотел назначить некоторые конкретные действия при нажатии на одно из изображений, которые я вставил в свой лист Excel. Проблема в том, что я получил 52 изображения (покерные карты для тех, кто интересуется). Итак, мой вопрос, есть ли способ избежать написания кода для 52 случаев и найти способ, как показано ниже:

Private Sub Image(x)_Click()
   Call common_subroutine(x)
End Sub

вместо того, чтобы писать одно и то же 52 раза, по одному на каждое другое имя изображения? Поскольку я использую ту же подпрограмму для работы с переменной в соответствии с регистром, нагрузка на работу не будет такой большой, если нет способа это сделать, но меня, конечно, беспокоит, является ли этот явно глупый способ единственным возможный.

3 ответа3

1

Хорошо, я немного запутался в вашем примере с VBA, но лучший способ сделать это - выбрать несколько картинок, щелкнуть правой кнопкой мыши - назначить макрос.

Это назначит один и тот же макрос всем выбранным изображениям.

0

Я сталкивался с этой проблемой несколько раз при программировании пользовательских форм. К сожалению, я не нашел способа обойти создание триггера для каждого объекта в отдельности. Однако я решил использовать Python для распечатки кода, который затем мог бы вставить в VBA пользовательской формы. Нет необходимости в утомительном изменении номера таким образом. (Полагаю, вы могли бы сделать это и в VBA, но удачи в одной строке.)

Цикл Python ниже будет работать для примера, который вы разместили.

for i in range(52):
    print "Private Sub Image%d_Click()\n\tCall common_subroutine(%d)\nEnd Sub\n" % (i + 1, i + 1)

Просто запустите из командной строки и скопируйте вывод.

0

Да. Дайте каждому изображению то же имя и другой индекс. Теперь вы можете ссылаться на этот объект как на целую коллекцию и выбирать изображение по заданному индексу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .