Здравствуйте! Подскажите, как узнать, какой CheckBox активирован, если массив создан динамически? по условию создаю массив из TextBox в которые вношу фамилии и CheckBox для дальнейшего выбора: [vba]
Код
Private Sub UserForm_Activate() Dim i As Integer Dim arrFIO(21) Dim TxtFio(20) As Object Dim ChKFio(20) As Object Dim countT As Integer
countT = 0 For i = 0 To 20 If Cells(i + 5, 3).Value = "a" Then 'если в столбце "С" стоит галочка arrFIO(i) = Cells(i + 5, 2) 'добавляю в массив фамилию из столбца "B",отмеченную галочкой Set TxtFio(i) = Me.Controls("Frame1").Add("Forms.TextBox.1") 'добавляю на форму TextBox Set ChKFio(i) = Me.Controls("Frame1").Add("forms.CheckBox.1") 'добавляю на форму CheckBox With TxtFio(i) 'задаю параметры TextBox .Top = 20 + 16 * countT .Height = 16 .Left = 10 .Width = 100 .Text = arrFIO(i) 'записываю в TextBox из массива arrFIO End With With ChKFio(i) 'задаю параметры CheckBox .Top = 20 + 16 * countT .Height = 16 .Left = 10 + 102 .Width = 100 .Caption = (i) End With countT = countT + 1 End If Next End Sub
[/vba] пытаюсь добраться до CheckBox так: [vba]
Код
Private Sub UserForm_Click() Dim X As Object Dim chk As String For i = 0 To Me.Frame1.Controls.count - 1 For Each X In Me.Frame1.Controls If X.TabIndex = i Then If TypeOf Me.Frame1.Controls(i) Is MSForms.CheckBox Then 'проверка, что это CheckBox If Me.Frame1.Controls("CheckBox" & i).Value = True Then '3 chk = "CheckBox" & i MsgBox chk End If End If End If Next Next End Sub
[/vba] но, безуспешно(((
Здравствуйте! Подскажите, как узнать, какой CheckBox активирован, если массив создан динамически? по условию создаю массив из TextBox в которые вношу фамилии и CheckBox для дальнейшего выбора: [vba]
Код
Private Sub UserForm_Activate() Dim i As Integer Dim arrFIO(21) Dim TxtFio(20) As Object Dim ChKFio(20) As Object Dim countT As Integer
countT = 0 For i = 0 To 20 If Cells(i + 5, 3).Value = "a" Then 'если в столбце "С" стоит галочка arrFIO(i) = Cells(i + 5, 2) 'добавляю в массив фамилию из столбца "B",отмеченную галочкой Set TxtFio(i) = Me.Controls("Frame1").Add("Forms.TextBox.1") 'добавляю на форму TextBox Set ChKFio(i) = Me.Controls("Frame1").Add("forms.CheckBox.1") 'добавляю на форму CheckBox With TxtFio(i) 'задаю параметры TextBox .Top = 20 + 16 * countT .Height = 16 .Left = 10 .Width = 100 .Text = arrFIO(i) 'записываю в TextBox из массива arrFIO End With With ChKFio(i) 'задаю параметры CheckBox .Top = 20 + 16 * countT .Height = 16 .Left = 10 + 102 .Width = 100 .Caption = (i) End With countT = countT + 1 End If Next End Sub
[/vba] пытаюсь добраться до CheckBox так: [vba]
Код
Private Sub UserForm_Click() Dim X As Object Dim chk As String For i = 0 To Me.Frame1.Controls.count - 1 For Each X In Me.Frame1.Controls If X.TabIndex = i Then If TypeOf Me.Frame1.Controls(i) Is MSForms.CheckBox Then 'проверка, что это CheckBox If Me.Frame1.Controls("CheckBox" & i).Value = True Then '3 chk = "CheckBox" & i MsgBox chk End If End If End If Next Next End Sub
Не совсем понятно, что Вы хотите получить. Может, так [vba]
Код
Dim X As Object Dim chk As String i = 0 For Each X In Me.Frame1.Controls If TypeOf X Is MSForms.CheckBox Then 'проверка, что это CheckBox If X.Value = True Then '3 chk = "Checkbox " & X.Caption MsgBox chk End If End If i = i + 1 Next
[/vba]
Не совсем понятно, что Вы хотите получить. Может, так [vba]
Код
Dim X As Object Dim chk As String i = 0 For Each X In Me.Frame1.Controls If TypeOf X Is MSForms.CheckBox Then 'проверка, что это CheckBox If X.Value = True Then '3 chk = "Checkbox " & X.Caption MsgBox chk End If End If i = i + 1 Next
Private Sub UserForm_Click() Dim X As Object For Each X In Me.Frame1.Controls If TypeOf X Is MSForms.CheckBox Then If X Then MsgBox X.Name End If Next End Sub
[/vba] off/ опоздал
[vba]
Код
Private Sub UserForm_Click() Dim X As Object For Each X In Me.Frame1.Controls If TypeOf X Is MSForms.CheckBox Then If X Then MsgBox X.Name End If Next End Sub
я хотел бы при активации chekbox обработать данные по работнику. Если checkbox кинут на Форму, то я могу к нему обращаться через CheckBox2_Click(), напримерБ если я выбрал CheckBox2 то: [vba]
Код
Private Sub CheckBox2_Click()
If CheckBox2.Value = False Then TextBox3.Visible = False Exit Sub End If
Select Case ComboBox5.Text Case "" CheckBox2.Value = False MsgBox "Выбирете производственное задание", vbOKOnly ComboBox5.SetFocus Case "погрузка производственного мусора", "уборка производственных помещений" Case Else Me.TextBox3.Visible = True End Select End Sub
[/vba] Вот, что то типо этого я и пробовал сделать(
я хотел бы при активации chekbox обработать данные по работнику. Если checkbox кинут на Форму, то я могу к нему обращаться через CheckBox2_Click(), напримерБ если я выбрал CheckBox2 то: [vba]
Код
Private Sub CheckBox2_Click()
If CheckBox2.Value = False Then TextBox3.Visible = False Exit Sub End If
Select Case ComboBox5.Text Case "" CheckBox2.Value = False MsgBox "Выбирете производственное задание", vbOKOnly ComboBox5.SetFocus Case "погрузка производственного мусора", "уборка производственных помещений" Case Else Me.TextBox3.Visible = True End Select End Sub
[/vba] Вот, что то типо этого я и пробовал сделать(Oleg34
Если Вы хотите отследить событие программно созданного элемента на форме, надо создавать модуль класса. Вот здесь хорошо написано, даже пример про Checkbox'ы есть. Где-то и на этом форуме была подобная тема, но не могу сейчас найти(Вот она Там про Combobox'ы
Вопрос в другом, стоит ли так заморачиваться? Не проще создать много элементов (с запасом), а видимыми делать только нужное количество?
Если Вы хотите отследить событие программно созданного элемента на форме, надо создавать модуль класса. Вот здесь хорошо написано, даже пример про Checkbox'ы есть. Где-то и на этом форуме была подобная тема, но не могу сейчас найти(Вот она Там про Combobox'ы
Вопрос в другом, стоит ли так заморачиваться? Не проще создать много элементов (с запасом), а видимыми делать только нужное количество?Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
отследить событие программно созданного элемента на форме, надо создавать модуль класса.
Заморочился с модулем класса. Оказалось не так уж и проблемно. Но все таки вопрос остался. Как получить доступ к TextBox(i), активируя Checkbox(i)? Пытался через Controls, по идее на форме уже отображены все Контролы. Но где получить доступ к TextBox, не соображу(((
отследить событие программно созданного элемента на форме, надо создавать модуль класса.
Заморочился с модулем класса. Оказалось не так уж и проблемно. Но все таки вопрос остался. Как получить доступ к TextBox(i), активируя Checkbox(i)? Пытался через Controls, по идее на форме уже отображены все Контролы. Но где получить доступ к TextBox, не соображу(((Oleg34