Поведение, которое вы описываете для своих элементов управления, похоже на поведение нескольких флажков, сопровождаемых флажком Выбрать все для одновременного включения или отключения всех флажков в наборе:
Я полагаю, что для этого вам нужно будет использовать некоторый код VBA в различных After Update
обработчиках событий для ваших элементов управления.
В следующем примере, я предполагаю, что у вас есть набор флажков, называемых chk1
, chk2
и chk3
и один Select All флажка под названием 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
функция оценивается, одновременно включая или отключая установку всех флажков параметров в форме.