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

Вход

Регистрация

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

 

= Мир MS Excel/Передача переменных из UserForm в Class и обратно - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Передача переменных из UserForm в Class и обратно
Fidgy Дата: Вторник, 04.06.2019, 17:31 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 11 ±
Замечаний: 0% ±

Excel 2016
День добрый!

Самостоятельно не смог найти ответа, поэтому прошу помощи
Как передавать значения переменных между Class и UserForm (или любую другую часть проекта)?
И можно ли передать объекты (через Set)?

Для примера файл во вложении:
Там UserForm при запуске которой генерируется два Label - "Lbl1" и "Lbl2"
И объявлен класс для управления ими: при нажатии на них, UserForm1.Label_Test.Visible = True
Я бы хотел, чтобы при нажатии на Label_Test, изменился его размер на размер Lbl1, или Lbl2 в зависимости от того что я нажал ранее
Хотел сделать это через Set и объявил глобальную переменную cLabel As Control, но дальше так и не продвинулся
К сообщению приложен файл: test2.xlsm (15.7 Kb)


Сообщение отредактировал Fidgy - Вторник, 04.06.2019, 17:32
 
Ответить
СообщениеДень добрый!

Самостоятельно не смог найти ответа, поэтому прошу помощи
Как передавать значения переменных между Class и UserForm (или любую другую часть проекта)?
И можно ли передать объекты (через Set)?

Для примера файл во вложении:
Там UserForm при запуске которой генерируется два Label - "Lbl1" и "Lbl2"
И объявлен класс для управления ими: при нажатии на них, UserForm1.Label_Test.Visible = True
Я бы хотел, чтобы при нажатии на Label_Test, изменился его размер на размер Lbl1, или Lbl2 в зависимости от того что я нажал ранее
Хотел сделать это через Set и объявил глобальную переменную cLabel As Control, но дальше так и не продвинулся

Автор - Fidgy
Дата добавления - 04.06.2019 в 17:31
doober Дата: Вторник, 04.06.2019, 23:23 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 971
Репутация: 333 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте.[vba]
Код
Private Sub Lbl_Click()
With UserForm1.Label1
    .Height = lbl.Height
    .Width = lbl.Width
    .Visible = True
End With
End Sub
[/vba]


 
Ответить
СообщениеЗдравствуйте.[vba]
Код
Private Sub Lbl_Click()
With UserForm1.Label1
    .Height = lbl.Height
    .Width = lbl.Width
    .Visible = True
End With
End Sub
[/vba]

Автор - doober
Дата добавления - 04.06.2019 в 23:23
Fidgy Дата: Среда, 05.06.2019, 09:14 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 11 ±
Замечаний: 0% ±

Excel 2016
Такой вариант к сожалению не подходит. Смысл в том, чтобы Label1 знал кто изменил его свойства
 
Ответить
СообщениеТакой вариант к сожалению не подходит. Смысл в том, чтобы Label1 знал кто изменил его свойства

Автор - Fidgy
Дата добавления - 05.06.2019 в 09:14
nilem Дата: Среда, 05.06.2019, 11:35 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Fidgy, привет
а если типа такого:
Добавляем стандартный модуль (Module1). В модуль
[vba]
Код
Public cLabel As Control
[/vba]
в модуле формы
[vba]
Код
Private Sub Label1_Click()
If Not cLabel Is Nothing Then
    MsgBox cLabel.Name
    Me.Label1.Width = cLabel.Width
End If
End Sub
[/vba]


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Среда, 05.06.2019, 11:37
 
Ответить
СообщениеFidgy, привет
а если типа такого:
Добавляем стандартный модуль (Module1). В модуль
[vba]
Код
Public cLabel As Control
[/vba]
в модуле формы
[vba]
Код
Private Sub Label1_Click()
If Not cLabel Is Nothing Then
    MsgBox cLabel.Name
    Me.Label1.Width = cLabel.Width
End If
End Sub
[/vba]

Автор - nilem
Дата добавления - 05.06.2019 в 11:35
Fidgy Дата: Среда, 05.06.2019, 12:20 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 11 ±
Замечаний: 0% ±

Excel 2016
nilem, не очень понял
Объявить переменную cLabel в модуле? А как туда передать значение из класса?

Тут даже не суть в самой задаче, а как передавать данные из класса в другие области и из других областей в класс

UPD:
С отдохнувшей головой смог сделать правильный запрос в гугл
Нужно всего лишь в UserForm1 объявить переменную через Public, а в классе уже указать UserForm1."имя переменно"
Тогда все успешно передаётся

Соответсвенно в UserForm1 я объявил переменную
[vba]
Код
Public cLabel As MSForms.Label
[/vba]

А в классе (для события объекта lbl) уже сделал сет:
[vba]
Код
Set UserForm1.cLabel = lbl
[/vba]


Сообщение отредактировал Fidgy - Среда, 05.06.2019, 12:21
 
Ответить
Сообщениеnilem, не очень понял
Объявить переменную cLabel в модуле? А как туда передать значение из класса?

Тут даже не суть в самой задаче, а как передавать данные из класса в другие области и из других областей в класс

UPD:
С отдохнувшей головой смог сделать правильный запрос в гугл
Нужно всего лишь в UserForm1 объявить переменную через Public, а в классе уже указать UserForm1."имя переменно"
Тогда все успешно передаётся

Соответсвенно в UserForm1 я объявил переменную
[vba]
Код
Public cLabel As MSForms.Label
[/vba]

А в классе (для события объекта lbl) уже сделал сет:
[vba]
Код
Set UserForm1.cLabel = lbl
[/vba]

Автор - Fidgy
Дата добавления - 05.06.2019 в 12:20
doober Дата: Среда, 05.06.2019, 13:35 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 971
Репутация: 333 ±
Замечаний: 0% ±

Excel 2010
Через свойство Tag можно[vba]
Код


Private Sub Lbl_Click()
With UserForm1.Label1
    .Height = lbl.Height
    .Width = lbl.Width
    .Visible = True
    .tag=lbl.Name
End With
End Sub
[/vba]


 
Ответить
СообщениеЧерез свойство Tag можно[vba]
Код


Private Sub Lbl_Click()
With UserForm1.Label1
    .Height = lbl.Height
    .Width = lbl.Width
    .Visible = True
    .tag=lbl.Name
End With
End Sub
[/vba]

Автор - doober
Дата добавления - 05.06.2019 в 13:35
  • Страница 1 из 1
  • 1
Поиск:

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