Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2013, 13:10   #1
PAMAC
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 17
По умолчанию Как выполнить функцию в случае нажатия на CheckBox, если данный CheckBox был добавлен через код?

Добрый день!
Подскажите, как можно выполнить функцию в случае нажатия на CheckBox, если данный CheckBox был добавлен через код таким вот способом: UserForm1.Frame1.Controls.Add("form s.checkbox.1", "df", True)?
PAMAC вне форума Ответить с цитированием
Старый 14.02.2013, 13:55   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

например, так:

Код:
Private WithEvents DF As MSForms.CheckBox

Private Sub DF_Click()
   MsgBox "test"
End Sub


Private Sub UserForm_Initialize()
  Set DF = UserForm1.Frame1.Controls.Add("Forms.CheckBox.1", "DF", True)
End Sub
или через классы.
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 14.02.2013 в 14:03.
DiemonStar вне форума Ответить с цитированием
Старый 17.02.2013, 10:23   #3
PAMAC
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 17
По умолчанию

Никак не решу данную проблему.

У меня в модуле (Module1) есть такая вот функция, с помощью которой на форму добавляются новые OptionButton:

Function addob()
Dim i As Integer
dim top as integer
top = 0
i = 10
Do While i >= 0
Set el = UserForm1.Frame4.Controls.Add("Form s.OptionButton.1", "myoption", True)
With el
.Caption = "Проверка"
.top = top
.Left = 15
.Width = 250
.GroupName = "groupob"
End With
top = top + 15

i = i - 1
Loop
end Function

Теперь для обработчика события добавляю класс (Class1) и следующий код в него:

Public WithEvents myoption As MSForms.OptionButton

Private Sub myoption_Click()
MsgBox 1
End Sub

Запускаю! Проверяю - не работает(((( Прошу помощи!
PAMAC вне форума Ответить с цитированием
Старый 17.02.2013, 13:53   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Надо создавать экземпляры класса и хранить из в массиве или коллекции, связывать каждый контрол со своим экземпляром. Код Module1:
Код:
Dim cl As New Collection

Function addob()
Dim i As Integer
Dim top As Integer
Dim el As Object
top = 0
i = 10
Do While i >= 0
    Set el = UserForm1.Frame4.Controls.Add("Forms.OptionButton.1", "myoption", True)
' !!!
    cl.Add New Class1
    Set cl(cl.Count).myoption = el
' !!!
    With el
        .Caption = "Проверка"
        .top = top
        .Left = 15
        .Width = 250
        .GroupName = "groupob"
    End With
    top = top + 15
    
    i = i - 1
Loop
End Function
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 17.02.2013 в 13:58.
Казанский вне форума Ответить с цитированием
Старый 17.02.2013, 14:09   #5
PAMAC
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 17
По умолчанию

Благодарю!
PAMAC вне форума Ответить с цитированием
Старый 17.02.2013, 17:27   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А вот здесь есть файл с примером использования классов на форме:
http://excelvba.ru/code/ClassModulesForUserform
EducatedFool вне форума Ответить с цитированием
Старый 21.02.2013, 13:17   #7
statsevera
 
Регистрация: 13.02.2013
Сообщений: 7
По умолчанию

помогите еще пожалуста, срабатывает только на последней созданной странице
Цитата:
Public WithEvents ToggleButton As MSForms.ToggleButton

Public MPi As String

Sub ToggleButton_Change()
msg = "ñðàáîòàëî"
MsgBox msg
End Sub
Цитата:
Dim MyToggleButton As chh, coll As Collection

Private Sub CommandButton1_Click()
Set coll = New Collection
MPi = Me.MultiPage1.Pages.Count - 1
With Me.MultiPage1.Pages.Add(Page, MPi + 1)
End With
Set MyToggleButton = New chh
Set MyToggleButton.ToggleButton = Me.MultiPage1.Pages(MPi + 1).Controls.Add("Forms.ToggleButton .1")
With MyToggleButton
With .ToggleButton
.Height = 24: .Left = 326: .Top = 30: .Width = 56: .Font.Size = 10: .Caption = "ñàò" & MPi
End With
coll.Add MyCheckBox
End With
End Sub
statsevera вне форума Ответить с цитированием
Старый 21.02.2013, 15:33   #8
statsevera
 
Регистрация: 13.02.2013
Сообщений: 7
По умолчанию

все разобрался))) тупанул
подскажите как на каждую кнопку назначить отдельное событие?
и как обращаться к элементу например textbox созданному таким образом?
statsevera вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CHECKBOX как с ним работать enjo Win Api 7 16.11.2012 19:40
Как выполнить цикл перебора значений?Не через многократное вложенное "ЕСЛИ"? Константи Microsoft Office Excel 1 30.08.2012 10:52
Как обращаться к Checkbox, если они вызываются программно??? 555Ksenia555 Microsoft Office Excel 1 24.07.2011 15:05
Удаление нескольких записей через checkbox dmitruha PHP 1 23.07.2011 16:07
Эмуляция нажатия клавиши при отметке Checkbox delphi_beginner Win Api 3 02.06.2007 10:07