Еще одна проблема, с которой я сталкиваюсь сейчас, с моей пользовательской формой и моими классами событий.
У меня есть пользовательская форма, состоящая из MultiPage и двух классов (class1 и class2). Код из моей пользовательской формы создает, щелкнув первую кнопку CommandButton, количество текстовых блоков, равное числу, введенному в текстовый блок на моей первой странице, и новую кнопку CommandButton. Они созданы на первой странице моей MultiPage. Нажав на новую CommandButton, я могу создать новые страницы, равные числу, введенному в моем первом TextBox, и назначить имена, введенные в новых TextBox на новых страницах.
Давайте возьмем в качестве примера, если я введу номер 2 в первом текстовом поле. Нажав на новый CommandButton, я вызываю класс Event (class1), который создает новые страницы, здесь две. На этих двух страницах часть моего кода class1 также позволяет мне создавать новую MultiPage на каждой из этих двух страниц. Более того, на первой странице этого нового MultiPage созданы два ComboBox.
Сейчас я пытаюсь связать два комбинированных списка, чтобы при выборе значения в первом ComboBox во время выполнения моей пользовательской формы значения во втором ComboBox менялись.
Я могу получить эту работу, но только на моей первой странице, созданной динамически с class1. Событие не применяется на второй странице, созданной динамически.
Вот несколько изображений, показывающих мою проблему:
Как вы можете видеть, событие применяется только на первой новой странице.
Вот часть кода из моего class1, которая создает новые страницы и поля со списком. В этой части я связал ComboBox с событием из моего class2:
Option Explicit
Public WithEvents CmdEvents As MSForms.CommandButton
Public frm As Object
Dim comboxBoxArray() As New Classe2
Private Sub CmdEvents_Click()
For i = 1 To nb_blocks 'nb_blocks represents the number entered in the first textbox
ReDim Preserve comboxBoxArray(1 To nb_blocks)
Set comboxBoxArray(i).comboBoxEvents = frm.Controls("MP2" + CStr(i)).Pages(0).combobox1
Set comboxBoxArray(i).frm2 = frm
Set combobox1 = Nothing
Next i
End Sub
Вот часть кода из моего class2, которая связана с class1 для назначения события между ComboBox 1 & 2 на первой странице моего второго MultiPage:
Option Explicit
Public WithEvents comboBoxEvents As MSForms.ComboBox
Public frm2 As Object
Private Sub comboBoxEvents_Change()
If frm2.combobox1.Text = "Water based fluids" Then
frm2.combobox2.Clear
For Each listA_ID In Ws2.Range("FluideEauGlacelf")
With frm2.Controls("combobox2")
.AddItem listA_ID.Value
End With
Next listA_ID
ElseIf frm2.combobox1.Text = "Oil fluids" Then
frm2.combobox2.Clear
For Each listB_ID In Ws1.Range("FluideHuile")
With frm2.Controls("combobox2")
.AddItem listB_ID.Value
End With
Next listB_ID
End If
End Sub
Знаете ли вы, откуда возникла проблема?