введите описание изображения здесь У меня есть пользователь, в котором я создаю 7 флажков программным способом и снимаю их с помощью 2 командных кнопок. Теперь у меня возникают проблемы, когда я пытаюсь прочитать / сохранить значение флажка при нажатии.
Я использовал модуль класса -
Public WithEvents cBox As MSForms.CheckBox
Private Sub cbox_click()
msgbox cBox.Name & " clicked. Value is now " & IIf(cBox.Value, "Checked", "Unchecked")
End Sub
А в пользовательской форме -
Dim chkBoxEvent As clsBoxEvent
Dim chkBoxColl As Collection
Private Sub btnAddClass_Click()
Dim ctrl As Control, newCtrl As Control, offsetTop As Integer
Set chkBoxColl = New Collection
offsetTop = 36
For Each ctrl In Me.Controls
If TypeName(ctrl) <> "CommandButton" Then
If ctrl.Top = btnAddClass.Top - offsetTop Then
If TypeName(ctrl) = "ComboBox" Then
Set newCtrl = Me.Controls.Add("Forms.ComboBox.1")
ElseIf TypeName(ctrl) = "TextBox" Then
Set newCtrl = Me.Controls.Add("Forms.TextBox.1")
End If
nchk = 7
If TypeName(ctrl) = "CheckBox" Then
For i = 1 To nchk
Set newCtrl = Me.Controls.Add("Forms.Checkbox.1")
With newCtrl
.Height = ctrl.Height
.Width = ctrl.Width
.Top = ctrl.Top + offsetTop
.Left = ctrl.Left
.Tag = nchk * 10
End With
Set chkBoxEvent = New clsBoxEvent
Set chkBoxEvent.cBox = Me.Controls(newCtrl.Name)
chkBoxColl.Add chkBoxEvent
Next
End If
If TypeName(newCtrl) <> "CheckBox" Then
With newCtrl
.Height = ctrl.Height
.Width = ctrl.Width
.Top = ctrl.Top + offsetTop
.Left = ctrl.Left
End With
End If
End If
End If
Next ctrl
btnAddClass.Top = btnAddClass.Top + offsetTop
btnRemoveClass.Top = btnRemoveClass.Top + offsetTop
Me.Height = Me.Height + offsetTop
End Sub
Private Sub btnRemoveClass_Click()
Dim ctrl As Control, offsetTop As Integer
offsetTop = 36
For Each ctrl In Me.Controls
If TypeName(ctrl) <> "CommandButton" Then
If ctrl.Top = btnAddClass.Top - offsetTop Then
Me.Controls.Remove (ctrl.Name)
End If
End If
Next ctrl
btnAddClass.Top = btnAddClass.Top - offsetTop
btnRemoveClass.Top = btnRemoveClass.Top - offsetTop
Me.Height = Me.Height - offsetTop
End Sub
Каждый раз, когда добавляется новый набор флажков, msgbox
отображается как «CheckBox22, 99, 110, 789» и т.д. c случайные числа.