Поведение, которое вы описываете для своих элементов управления, похоже на поведение нескольких флажков, сопровождаемых флажком Выбрать все для одновременного включения или отключения всех флажков в наборе:
Я полагаю, что для этого вам нужно будет использовать некоторый код VBA в различных обработчиках событий After Update
для своих элементов управления.
В следующем примере я предполагаю, что у вас есть набор флажков с именами chk1
, chk2
и chk3
и один флажок Выбрать все с именем chkA
(однако его можно расширить до любого числа флажков , просто увеличив верхний предел For
петель).
Затем вы можете достичь желаемого поведения, используя следующие две функции:
Функция для переключения всех флажков опций на заданное значение:
Function ToggleAll(v As Integer)
Dim i As Integer
For i = 1 To 3
Controls("chk" & i).Value = v
Next i
End Function
Функция, позволяющая проверить, все ли флажки опций включены, и включить или отключить флажок Выбрать все соответственно:
Function AllEnabled()
Dim i As Integer, v As Integer: v = -1
For i = 1 To 3
v = v * Abs(Controls("chk" & i).Value)
Next i
chkA.Value = v
End Function
Затем вам просто нужно оценить вышеупомянутые функции из обработчиков событий After Update
для ваших элементов управления:
Private Sub chk1_AfterUpdate()
AllEnabled
End Sub
Private Sub chk2_AfterUpdate()
AllEnabled
End Sub
Private Sub chk3_AfterUpdate()
AllEnabled
End Sub
Private Sub chkA_AfterUpdate()
ToggleAll chkA
End Sub
Здесь каждый раз, когда значение отдельных флажков параметров изменяется, функция AllEnabled
проверяет, все ли флажки параметров включены и соответствующим образом устанавливает значение флажка Выбрать все .
При изменении значения флажка « Выбрать все» (chkA
) оценивается функция ToggleAll
, одновременно включая или отключая настройку всех флажков параметров в форме.