У меня есть форма пользователя, позволяющая пользователям выбирать. Параметры должны быть сохранены, пока файл Excel не будет закрыт. Перед этим параметры будут записаны, даже если пользовательская форма закрыта. В пользовательской форме у меня 11 флажков.
Итак, я поместил 11 глобальных переменных в модуле "sheet1" (переименован в DataBase):
Public chk1Last As Boolean
Public chk2Last As Boolean
Public chk3Last As Boolean
Public chk4Last As Boolean
Public chk5Last As Boolean
Public chk6Last As Boolean
Public chk7Last As Boolean
Public chk8Last As Boolean
Public chk9Last As Boolean
Public chk10Last As Boolean
Public chk11Last As Boolean
И я использую следующий код в классе, чтобы записать статус флажка для глобальной переменной в sheet1 (переименованной в DataBase):
Private Sub Chk_Change()
Select Case Chk.Name
Case "chk1"
DataBase.chk1Last = Chk
Case "chk2"
DataBase.chk2Last = Chk
Case "chk3"
DataBase.chk3Last = Chk
Case "chk4"
DataBase.chk4Last = Chk
Case "chk5"
DataBase.chk5Last = Chk
Case "chk6"
DataBase.chk6Last = Chk
Case "chk7"
DataBase.chk7Last = Chk
Case "chk8"
DataBase.chk8Last = Chk
Case "chk9"
DataBase.chk9Last = Chk
Case "chk10"
DataBase.chk10Last = Chk
Case "chk11"
DataBase.chk11Last = Chk
End Select
'Do other things beneath'
А в основном модуле я использую следующий код для инициализации пользовательской формы ", если пользовательская форма загружается первой, все флажки будут включены, если нет, флажки будут следовать состоянию lase:
Private Sub UserForm_Activate()
If Not DataBase.Activated Then
For i = 1 To 11
Controls("chk" & i) = True
Next i
Else
chk1 = DataBase.chk1Last
chk2 = DataBase.chk2Last
chk3 = DataBase.chk3Last
chk4 = DataBase.chk4Last
chk5 = DataBase.chk5Last
chk6 = DataBase.chk6Last
chk7 = DataBase.chk7Last
chk8 = DataBase.chk8Last
chk9 = DataBase.chk9Last
chk10 = DataBase.chk10Last
chk11 = DataBase.chk11Last
End If
'Do other things beneath'
То, что я пытаюсь сделать, - это упростить код в модуле класса, как показано ниже:
В листе 1 (переименован в базу данных):
Controls("DataBase." & Chk.name & "Last") = Chk
А в разделе main для упрощения кода с помощью цикла for и controls () что-то вроде ниже:
Private Sub UserForm_Activate()
If Not DataBase.Activated Then
For i = 1 To 11
Controls("chk" & i) = True
Next i
Else
For i = 1 to 11
Controls("chk" & i) = Controls("DataBase.chk" & i & "Last")
Next i
End If
'Do other things beneath'
Но это не удалось, какой правильный синтаксис, если я хочу вызывать переменную в других модулях с помощью controls ()?
Большое спасибо за вашу искреннюю помощь.