Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Один обработчик события - нескольким однотипным объектам - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Один обработчик события - нескольким однотипным объектам (VBA+Excel+Events)
Один обработчик события - нескольким однотипным объектам
SGerman Дата: Среда, 29.06.2016, 16:04 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
Здравствуйте !

На форме есть несколько однотипных TextBox, в которые пользователь должен вводить данные по одинаковым правилам. Для одного из боксов написан обработчик Change, не "пропускающий" неправильные символы.

Можно ли, не создавая "своих" подобных обработчиков для других боксов, просто "назначить" им уже имеющийся ?

Если да, то каким образом этот "универсальный" обработчик будет обращаться к "своему" боксу, ведь понятия "Sender" как в Delphi в VBA нет ?

Спасибо за помощь


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеЗдравствуйте !

На форме есть несколько однотипных TextBox, в которые пользователь должен вводить данные по одинаковым правилам. Для одного из боксов написан обработчик Change, не "пропускающий" неправильные символы.

Можно ли, не создавая "своих" подобных обработчиков для других боксов, просто "назначить" им уже имеющийся ?

Если да, то каким образом этот "универсальный" обработчик будет обращаться к "своему" боксу, ведь понятия "Sender" как в Delphi в VBA нет ?

Спасибо за помощь

Автор - SGerman
Дата добавления - 29.06.2016 в 16:04
RAN Дата: Среда, 29.06.2016, 16:25 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 0% ±

2010
1 функция
2 класс


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение1 функция
2 класс

Автор - RAN
Дата добавления - 29.06.2016 в 16:25
Karataev Дата: Среда, 29.06.2016, 19:31 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 643
Репутация: 227 ±
Замечаний: 0% ±

Excel
Чтобы использовать одно событие для нескольких элементов управления, нужно создать модуль класса.
В этот модуль класса нужно записать событие.
Затем в самой UserForm'е нужно создать массив с типом "Class1" (это имя модуля класса).
И затем нужно каждый TextBox привязать к этому массиву.

В данном конкретном примере смысл такой. Пользователь делает изменение в TextBox'е и макрос отображает имя TextBox'а в котором сделали изменение.
К сообщению приложен файл: Macro_Kar.xlsm(19Kb)


 
Ответить
СообщениеЧтобы использовать одно событие для нескольких элементов управления, нужно создать модуль класса.
В этот модуль класса нужно записать событие.
Затем в самой UserForm'е нужно создать массив с типом "Class1" (это имя модуля класса).
И затем нужно каждый TextBox привязать к этому массиву.

В данном конкретном примере смысл такой. Пользователь делает изменение в TextBox'е и макрос отображает имя TextBox'а в котором сделали изменение.

Автор - Karataev
Дата добавления - 29.06.2016 в 19:31
SGerman Дата: Среда, 29.06.2016, 20:56 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
О как ! Через левую пятку :) Ну, делать нечего, буду пробовать :)
Да уж, после дельфей такое чувство, что из порше пересел на верблюда.

Спасибо за подсказки, будем учиться :)


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеО как ! Через левую пятку :) Ну, делать нечего, буду пробовать :)
Да уж, после дельфей такое чувство, что из порше пересел на верблюда.

Спасибо за подсказки, будем учиться :)

Автор - SGerman
Дата добавления - 29.06.2016 в 20:56
RAN Дата: Среда, 29.06.2016, 21:00 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 0% ±

2010
Класс, это вариант.
Но, функция проще и лучше.
[p.s.]Хотя, не совсем так. И там и там свои +/-.[/p.s.]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Среда, 29.06.2016, 21:04
 
Ответить
СообщениеКласс, это вариант.
Но, функция проще и лучше.
[p.s.]Хотя, не совсем так. И там и там свои +/-.[/p.s.]

Автор - RAN
Дата добавления - 29.06.2016 в 21:00
SLAVICK Дата: Среда, 29.06.2016, 23:27 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 1849
Репутация: 614 ±
Замечаний: 0% ±

2007,2010,2013,2016
это вариант

я бы сказал чуть ли не единственный вариант, для унификации.
как-то делал календарик - практически пустая юзерформа а в ней создаются кнопки в зависимости от ее размера + отслеживаются перемещения мышью. без модулей класса так не выйдет. Это в этом примере 2а текстбокса - а если будет около 50 %)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
это вариант

я бы сказал чуть ли не единственный вариант, для унификации.
как-то делал календарик - практически пустая юзерформа а в ней создаются кнопки в зависимости от ее размера + отслеживаются перемещения мышью. без модулей класса так не выйдет. Это в этом примере 2а текстбокса - а если будет около 50 %)

Автор - SLAVICK
Дата добавления - 29.06.2016 в 23:27
RAN Дата: Четверг, 30.06.2016, 08:17 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4277
Репутация: 829 ±
Замечаний: 0% ±

2010
Все бы ничего, если бы не одно большое "НО". В классе отсутствуют такие события, как Enter и Exit.
Их, конечно можно эмулировать через события мыши, но это такой кривой костыль... :(


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВсе бы ничего, если бы не одно большое "НО". В классе отсутствуют такие события, как Enter и Exit.
Их, конечно можно эмулировать через события мыши, но это такой кривой костыль... :(

Автор - RAN
Дата добавления - 30.06.2016 в 08:17
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Один обработчик события - нескольким однотипным объектам (VBA+Excel+Events)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!