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

Вход

Регистрация

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

 

= Мир MS Excel/Выполнить некоторые действия перед открытием формы - Мир MS Excel

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

Excel 2003
UserForm перед своим открытием должна заполнить некоторые объекты на ней (TextBox, ComboBox).
В коде формы пишу
[vba]
Код

Private Sub frmLogin_Activate()
   edFam.Text = Worksheets("Login").Cells(1, 1).Value
End Sub
[/vba]

Однако ничего не происходит. Как правильно "отлавливать" событие открытия формы ею самой ?

Спасибо


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеUserForm перед своим открытием должна заполнить некоторые объекты на ней (TextBox, ComboBox).
В коде формы пишу
[vba]
Код

Private Sub frmLogin_Activate()
   edFam.Text = Worksheets("Login").Cells(1, 1).Value
End Sub
[/vba]

Однако ничего не происходит. Как правильно "отлавливать" событие открытия формы ею самой ?

Спасибо

Автор - SGerman
Дата добавления - 26.06.2016 в 20:04
Karataev Дата: Воскресенье, 26.06.2016, 20:12 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 890
Репутация: 336 ±
Замечаний: 0% ±

Excel
Код у Вас правильный, но предположу, что Вы указали неправильно имя формы. У Вас используется имя формы "frmLogin", но возможно форма на самом деле имеет другое имя.
Вообще обычно используется событие "UserForm_Initialize" перед запуском формы. Но событие "UserForm_Activate" тоже можно использовать, если все работает исправно.


 
Ответить
СообщениеКод у Вас правильный, но предположу, что Вы указали неправильно имя формы. У Вас используется имя формы "frmLogin", но возможно форма на самом деле имеет другое имя.
Вообще обычно используется событие "UserForm_Initialize" перед запуском формы. Но событие "UserForm_Activate" тоже можно использовать, если все работает исправно.

Автор - Karataev
Дата добавления - 26.06.2016 в 20:12
Alex_ST Дата: Понедельник, 27.06.2016, 11:01 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3048
Репутация: 551 ±
Замечаний: 0% ±

2003
Option Explicit - панацея от не правильного ввода имён :D
Но даже если лень обзывать переменные (и почему-то не лень потом возиться с отладкой), то пишите не сокращённо: edFam.Text, а начните со слова Me. тогда сразу после точки у Вас вывалится список доступных на форме элементов и ошибиться будет намного сложнее



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Понедельник, 27.06.2016, 11:03
 
Ответить
СообщениеOption Explicit - панацея от не правильного ввода имён :D
Но даже если лень обзывать переменные (и почему-то не лень потом возиться с отладкой), то пишите не сокращённо: edFam.Text, а начните со слова Me. тогда сразу после точки у Вас вывалится список доступных на форме элементов и ошибиться будет намного сложнее

Автор - Alex_ST
Дата добавления - 27.06.2016 в 11:01
RAN Дата: Понедельник, 27.06.2016, 12:37 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4552
Репутация: 920 ±
Замечаний: 0% ±

2010
[vba]
Код
Private Sub frmLogin_Activate()
[/vba]
запустится макросом по команде [vba]
Код
Call  frmLogin_Activate
[/vba].
А событие формы, это
[vba]
Код
Private Sub UserForm_Activate()
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Private Sub frmLogin_Activate()
[/vba]
запустится макросом по команде [vba]
Код
Call  frmLogin_Activate
[/vba].
А событие формы, это
[vba]
Код
Private Sub UserForm_Activate()
[/vba]

Автор - RAN
Дата добавления - 27.06.2016 в 12:37
Alex_ST Дата: Понедельник, 27.06.2016, 12:40 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3048
Репутация: 551 ±
Замечаний: 0% ±

2003
Ну, котяра, умыл... hands



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеНу, котяра, умыл... hands

Автор - Alex_ST
Дата добавления - 27.06.2016 в 12:40
SGerman Дата: Понедельник, 27.06.2016, 18:02 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
Похоже, что VB понимает "фиксированные" имена событий, поэтому НЕЗАВИСИМО от реальных имен объектов имена обработчиков надо указывать "по стандарту".
Да, после Delphi/C-Builder надо привыкать к плохому :)

Всем большое спасибо - помогло, конечно !


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеПохоже, что VB понимает "фиксированные" имена событий, поэтому НЕЗАВИСИМО от реальных имен объектов имена обработчиков надо указывать "по стандарту".
Да, после Delphi/C-Builder надо привыкать к плохому :)

Всем большое спасибо - помогло, конечно !

Автор - SGerman
Дата добавления - 27.06.2016 в 18:02
Karataev Дата: Понедельник, 27.06.2016, 18:17 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 890
Репутация: 336 ±
Замечаний: 0% ±

Excel
Да, я был частично прав. Не прав в том, что оказывается для UserForm'ы всегда в имени события нужно использовать приставку "UserForm" независимо от имени UserForm'ы. Никогда раньше на это внимание не обращал.




Сообщение отредактировал Karataev - Понедельник, 27.06.2016, 18:19
 
Ответить
СообщениеДа, я был частично прав. Не прав в том, что оказывается для UserForm'ы всегда в имени события нужно использовать приставку "UserForm" независимо от имени UserForm'ы. Никогда раньше на это внимание не обращал.

Автор - Karataev
Дата добавления - 27.06.2016 в 18:17
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выполнить некоторые действия перед открытием формы (Macros/VBA)
Страница 1 из 11
Поиск:

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