Страницы: 1
RSS
Как присвоить форму UserForm для переменной
 
Доброго времени суток.

Хочу вынести проверку заполнения полей форм в отдельную процедуру.
Подскажите, пожалуйста, как правильно присвоить форму UserForm переменной?
Код
Public Sub CheckFormFields(ByVal ChooseNameOfForm As Variant)
Dim ctrl As Control
Dim frmName As UserForm

Set frmName = ??????? имя формы передаётся из переменной ChooseNameOfForm 

With frmName

.....

End With
End Sub
 
используйте Set для присвоения формы пременной
(вот только зачем это НУЖНО?, если переменная уже есть и в общем случае называется UserForm1, что мешает обращаться к ней???)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
(вот только зачем это НУЖНО?, если переменная уже есть и в общем случае называется UserForm1, что мешает обращаться к ней???)
форм может быть несколько и я просто хотел вызывать процедуру и в параметрах указывать на какой форме произвести проверку. не могу понять как это сделать
 
Код
with userform1
if .textbox1.text = "" then
......
end if
end with
 
если я так обращаюсь, то у меня всё нормально работает, а если мне нужно передать к какой конкретно форме обращаться из переменной, то не получается.  
 
тем более не нужно.
где-то в форме пишете
Код
CheckFormFields Me 'передайте форму как параметр в процедуру проверки полей
а уже в
Код
Public Sub CheckFormFields(ByVal ChooseNameOfForm As Variant)
обращаясь к ChooseNameOfForm, Вы обращаетесь вот к той конкретной форме, которая вызвала процедуру проверки полей
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
покажите пример и опишите задачу точнее
 
Ігор Гончаренко, а как передать имя не из формы?
пример: на листе выпадающий список из 50 позиций и в зависимости от его значения я хочу кнопкой вызывать одну из 50 форм
Изменено: VideoAlex - 17.06.2018 16:18:52
 
Цитата
Ігор Гончаренко написал:
обращаясь к ChooseNameOfForm, Вы обращаетесь вот к той конкретной форме, которая вызвала процедуру проверки полей
Что-то не получается у меня.((

У меня есть кнопка на листе, которая вызывает форму, в которой пользователь должен заполнить поля и после нажатия кнопки "выполнить" на форме, должна выполниться проверка заполнения полей. Пока код проверки был в модуле формы, всё было нормально. Когда я вынес его в отдельную обработку, которая расположена в общем модуле, никак не могу задать точное имя формы, которую нужно проверить.
 
Цитата
Shadow.ua написал: У меня есть кнопка на листе, которая вызывает форму
Это все где-то у Вас, у нас тут ничего подобного не наблюдается. Думаете кому-то интересно сооружать файл с несколькими формами, воспроизводить в нем ВАШУ задачу и благополучно ее решать? Может сделаете сами файл-пример (как Правила рекомендуют)? Как есть - Как надо
Изменено: Sanja - 17.06.2018 16:53:35
Согласие есть продукт при полном непротивлении сторон
 
Shadow.ua,
см #6. там написано как сделать то, что Вы хотите  
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
Shadow.ua , см #6. там написано как сделать то, что Вы хотите  
На сколько я понял, то автор хочет передавать из одной формы,  другие формы в переменную (UserForm), а имена этих форм занесены в список (например ComboBox). Поэтому, то что в сообщении №6 не подойдет.
"Все гениальное просто, а все простое гениально!!!"
 
Чтобы было понятно, что в #6 написано
 
Shadow.ua, Скажите а какой смысл присваивать переменной другие формы, как потом работать с элементами этих форм, ведь сами формы по сути должны быть различные и элементы у них различные? А если с элементами форм не работать , то и присвоение теряет вообще всякий смысл.
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Shadow.ua написал:
...форму, в которой пользователь должен заполнить поля и после нажатия кнопки "выполнить" на форме, должна выполниться проверка заполнения полей. Пока код проверки был в модуле формы
Код проверки и должен быть в модуле той формы, заполнение полей которой проверяете. Ведь кнопку "Выполнить" Вы нажимаете на той форме, которую заполнили?
 
Shadow.ua,
см. вложение. Это хотели?
для 3-х форм выполняется 1 процедура проверки, которая (ничего не проверяет) но в курсе с какой формы была вызвана, добавляйте элементы управления на формы, выполняйте, смотрите что вышло.
удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Shadow.uaУ вас есть два варианта решения, мой ответ №13 и ответ Игоря №16. Оба работают, в обоих имя формы правильно передается в процедуру проверки. Разница лишь в том, что у меня проверяются на заполненность только TextBox, а у Игоря проверяются все Controls в форме.
Если у вас и эти решения не работают - давайте скрин/описание ошибки, иначе - к экстрасенсам (не в обиду ;) ).


Скрытый текст
 
Іgor Goncharenko,Vitaliy P
Спасибо, работает ))
Только вот странно, я так тоже пробовал и до того, пока не открыл файл с Вашим вариантом у меня выдавало ошибку, а после того как попробовал Ваш и у меня ошибка пропала.  8-0

Nordheim, смысл простой - есть несколько форм на которых кроме проверки TextBox и RefEdit ничего проверять не нужно, вот и подумал как сделать так, чтобы не вставлять код проверки в каждую форму.
Страницы: 1
Наверх