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

Вход

Регистрация

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

 

= Мир MS Excel/Передача параметра в форму при OnLoad - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Передача параметра в форму при OnLoad (Макросы/Sub)
Передача параметра в форму при OnLoad
Cere6ellum Дата: Среда, 01.04.2020, 17:22 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем здравствуйте.
Проблема у меня с Access, но в контексте VBA.
Нужно, чтобы форма запускалась только при клике по кнопке на другой форме.
То есть сделать так, чтобы форма эта не запускалась, если не была нажата кнопка.

Для этого решил применить принцип геттеров и сеттров.

Но не получается.

При клике по кнопке создаю экземпляр формы и присваиваю значение True её закрытому свойству:
[vba]
Код

Dim classObj As New Form_ADD
    classObj.checkReq = True
[/vba]

В классе этой формы написал методы:
[vba]
Код

Private checkRequest As Boolean

Public Property Get checkReq() As Boolean
    checkReq = checkRequest
End Property

Public Property Let checkReq(ByVal checkRequestValue As Boolean)
    checkRequest = checkRequestValue
End Property
[/vba]

Ну и собственно при OnLoad делаю проверку:
[vba]
Код

If checkRequest = False Then
        DoCmd.Close acForm, formName
    End If
[/vba]

Всё это в теории должно работать, но значение True не присваивается checkRequest.
Соответственно форма не открывается при любых обстоятельствах.

Помогите советом. Что нужно исправить?
Уже всю голову сломал.
 
Ответить
СообщениеВсем здравствуйте.
Проблема у меня с Access, но в контексте VBA.
Нужно, чтобы форма запускалась только при клике по кнопке на другой форме.
То есть сделать так, чтобы форма эта не запускалась, если не была нажата кнопка.

Для этого решил применить принцип геттеров и сеттров.

Но не получается.

При клике по кнопке создаю экземпляр формы и присваиваю значение True её закрытому свойству:
[vba]
Код

Dim classObj As New Form_ADD
    classObj.checkReq = True
[/vba]

В классе этой формы написал методы:
[vba]
Код

Private checkRequest As Boolean

Public Property Get checkReq() As Boolean
    checkReq = checkRequest
End Property

Public Property Let checkReq(ByVal checkRequestValue As Boolean)
    checkRequest = checkRequestValue
End Property
[/vba]

Ну и собственно при OnLoad делаю проверку:
[vba]
Код

If checkRequest = False Then
        DoCmd.Close acForm, formName
    End If
[/vba]

Всё это в теории должно работать, но значение True не присваивается checkRequest.
Соответственно форма не открывается при любых обстоятельствах.

Помогите советом. Что нужно исправить?
Уже всю голову сломал.

Автор - Cere6ellum
Дата добавления - 01.04.2020 в 17:22
doober Дата: Среда, 01.04.2020, 18:07 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 671
Репутация: 255 ±
Замечаний: 0% ±

Excel 2010
Всё это в теории должно работать,

Не должно , сначала идет загрузка формы, потом присваивается свойство checkReq
Можно через модуль.
К сообщению приложен файл: 2510645.zip(61.2 Kb)


 
Ответить
Сообщение
Всё это в теории должно работать,

Не должно , сначала идет загрузка формы, потом присваивается свойство checkReq
Можно через модуль.

Автор - doober
Дата добавления - 01.04.2020 в 18:07
Cere6ellum Дата: Четверг, 02.04.2020, 09:54 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Можно через модуль.

Класс. Спасибо. Работает.

А можно как-нибудь сделать универсальные гет\сет функции, если форм для контроля много?
В этом отдельном модуле прописать приватные переменные для каждой формы, но методы гет и сет оставить лишь два. И чтобы они принимали аргумент, относящийся к конкретному приватному полю.

Или всё же придётся для каждого Private поля прописывать свои get/set методы?
 
Ответить
Сообщение
Можно через модуль.

Класс. Спасибо. Работает.

А можно как-нибудь сделать универсальные гет\сет функции, если форм для контроля много?
В этом отдельном модуле прописать приватные переменные для каждой формы, но методы гет и сет оставить лишь два. И чтобы они принимали аргумент, относящийся к конкретному приватному полю.

Или всё же придётся для каждого Private поля прописывать свои get/set методы?

Автор - Cere6ellum
Дата добавления - 02.04.2020 в 09:54
doober Дата: Четверг, 02.04.2020, 10:54 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 671
Репутация: 255 ±
Замечаний: 0% ±

Excel 2010
для каждого Private поля прописывать свои get/set методы?

Да, каждому свое


 
Ответить
Сообщение
для каждого Private поля прописывать свои get/set методы?

Да, каждому свое

Автор - doober
Дата добавления - 02.04.2020 в 10:54
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Передача параметра в форму при OnLoad (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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