1-я версия: Когда вы работаете с экземпляром по умолчанию пользовательских форм, ваш код в Main может выглядеть так:
Private Sub CommandButton1_Click()
If ComboBox1.Value = "Test1" Then
Test.Label1.Visible = True
Test.Label2.Visible = False
End If
If ComboBox1.Value = "Test2" Then
Test.Label1.Visible = False
Test.Label2.Visible = True
End If
Test.Show
End Sub
Private Sub UserForm_Initialize()
Load Test
ComboBox1.AddItem "Test1"
ComboBox1.AddItem "Test2"
End Sub
Для использования экземпляра по умолчаниюВозможно, вы захотите взглянуть на следующие ссылки, а также на searach для себя, поскольку у этого есть определенные недостатки
VBA Пользовательские формы, используемые без явного создания экземпляра
Rubberduck: Userform1.show
2-я версия: В улучшенной версии также потребуется код во второй пользовательской форме
Код в Main
Option Explicit
Dim fTest As Test
Private Sub CommandButton1_Click()
If ComboBox1.Value = "Test1" Then
fTest.Label1.Visible = True
fTest.Label2.Visible = False
fTest.Show
End If
If ComboBox1.Value = "Test2" Then
fTest.Label1.Visible = False
fTest.Label2.Visible = True
fTest.Show
End If
End Sub
Private Sub UserForm_Initialize()
Set fTest = New Test
ComboBox1.AddItem "Test1"
ComboBox1.AddItem "Test2"
End Sub
ИКод в тесте, где вам также нужна кнопка Закрыть, тогда
Option Explicit
Private Sub btnClose_Click()
Hide
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer _
, CloseMode As Integer)
' Prevent the form being unloaded
If CloseMode = vbFormControlMenu Then Cancel = True
Hide
End Sub
3-я версия: со свойством может выглядеть так
Код в Main
Option Explicit
Dim fTest As Test
Private Sub CommandButton1_Click()
fTest.whichLbl = ComboBox1.Value
fTest.Show
End Sub
Private Sub UserForm_Initialize()
Set fTest = New Test
ComboBox1.AddItem "Test1"
ComboBox1.AddItem "Test2"
End Sub
и код в тесте
Option Explicit
Dim lbl As String
Private Sub btnClose_Click()
Hide
End Sub
Private Sub UserForm_Activate()
Select Case lbl
Case "Test1"
Label1.Visible = True
Label2.Visible = False
Case "Test2"
Label1.Visible = False
Label2.Visible = True
Case Else
Label1.Visible = False
Label2.Visible = False
End Select
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer _
, CloseMode As Integer)
' Prevent the form being unloaded
If CloseMode = vbFormControlMenu Then Cancel = True
Hide
End Sub
Property Let whichLbl(selLbl As String)
lbl = selLbl
End Property