VBA Excel. Привязка события к элементу управления

    Привязка события к программно созданному элементу управления формы в VBA Excel на примере привязки события SpinButton_Change к счетчику и события CommandButton_Click к кнопке.

    Привязка события к элементу управления

    Динамически созданные элементы управления пользовательской формы никак не реагируют на свойственные им события. Чтобы это изменить, необходимо объявить переменные, предназначенные для создания этих элементов управления,

    1. с типом, описывающим создаваемый элемент управления;
    2. с ключевым словом WithEvents, которое указывает, что создаваемый объект должен быть связан со всеми присущими ему событиями.

    Процедуры событий для программно созданных элементов управления должны быть заранее приготовлены в модуле пользовательской формы.

    Синтаксис процедур событий для динамически создаваемых элементов управления:

    Пример привязки событий к объектам

    Пример привязки события SpinButton_Change к программно созданному счетчику (SpinButton) и привязки события CommandButton_Click к динамически созданной кнопке (CommandButton):

    Внешний вид пользовательской формы с динамически созданными элементами управления (SpinButton, TextBox и CommandButton) с размерами по умолчанию в VBA Excel 2016:

    Значение счетчика автоматически копируется в текстовое поле, а кнопка «Обнулить» обнуляет и счетчик, и значение в текстовом поле.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    4 комментария для “VBA Excel. Привязка события к элементу управления”

    1. Станислав

      Как же долго я разбирался почему у меня ваш код работает, а мой нет. Хотя уже все 10 раз перепроверил (вроде бы). Я уже 100500 способов перепробовал, перелопатил весь код, «оптимизировал» и изменял все подряд. Дошел до того, что начал построчно копировать и сверять и понял, что я невнимательный балбес которому надо еще много читать и изучать.
      Спасибо за ваш труд. Очень помогло.

    2. Василий

      Добрый день.
      А для массива контролов как будет выглядеть этот пример? В Интернете предлагается через классы. Есть вариант проще?
      Спасибо

      1. Григорий

        Поддерживаю вопрос! Тоже столкнулся с нуждой добавить кучу кнопок. Как событийно к ним обращаться? По имени, как у стандартных контролов увы, не получается.(

    3. Константин

      Добрый день,Евгений!
      Как собрать данные по имеющимся файлам в папке Проба, дата и время изменения с отображением на активном Листе1 файла Первый.xlsm в ячейке (обновлено, дата, время, или просто заливается цветом).
      В папке Проба имеется 10 файлов (ПР1.xlsm, ПР2.xlsm,…ПР10.xlsm) с постоянными именами. Обновляются файлы не открывая их, при помощи Вставить с заменой.
      Далее в файле Первый.xlsm (обновлено, дата, время, или просто заливается цветом) по каждому файлу для дальнейшего открытия их, чтобы все данные в файлах по ссылкам заняли свои места.

      Может что-то есть у Вас подобное?

    Добавить комментарий

    Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора.