Я полный новичок в VBA.
Я создал несколько флажков в Excel (не активен X), и я хотел бы сделать особый вид контроля: у меня есть флажки с именами A, B, C иDI хотел бы сделать один (или более) макрос VBA, который бы выполнял: Если B отмечен / не отмечен, то C и D отмечены / не отмечены Если A отмечен / не отмечен, тогда B, C и D отмечены / не проверены
Я попробовал следующее для всего элемента управления:
Sub BoucleCheckBoxes_Formulaire()
Dim Cb As CheckBox
'Boucle sur les checkboxes formulaires de la Feuil1
For Each Cb In ActiveSheet.CheckBoxes
'si la case est cochée
'(utilisez xlOff pour vérifier le statut "décoché")
If Cb.Value = xlOn Then
Cb.Value = xlOff
Else
If Cb.Value = xlOff Then
Cb.Value = xlOn
End If
End If
Next Cb
End Sub
Но у меня есть проблема: флажок, связанный с макросом, всегда проверяется (хотя при каждом нажатии другойфлажки состояния переключаются, как и ожидалось), вероятно, потому что он включен в цикл, как и другие флажки.На самом деле я хотел бы иметь возможность применить состояние флажка к определенному и ограниченному списку других флажков
Я не смог найти, можно ли выбрать группу флажков в зависимости от их положения или имени
может кто-нибудь помочь, пожалуйста
спасибо
Вот полное решение из ответа :
Я создаю четыре флажка,Случай 1, Случай 2, Случай 3, Случай 4.
Случай 1 управляет тремя другими одновременно: когда включено => все включено, когда выключено => все выключено.
Каждый издругие могут переключаться индивидуально: когда «Выкл.», «Случай 1» становится «Выкл.», когда «Вкл.», если другой режим «Вкл.», переключается на «Случай 1».
Вот макросы, используемые для этого:
Sub Case_1_Cliquer()
c1 = ActiveSheet.CheckBoxes("Case 1").Value
If c1 = xlOff Then
ActiveSheet.CheckBoxes("Case 2").Value = xlOff
ActiveSheet.CheckBoxes("Case 3").Value = xlOff
ActiveSheet.CheckBoxes("Case 4").Value = xlOff
ElseIf c1 = xlOn Then
ActiveSheet.CheckBoxes("Case 2").Value = xlOn
ActiveSheet.CheckBoxes("Case 3").Value = xlOn
ActiveSheet.CheckBoxes("Case 4").Value = xlOn
End If
End Sub
Sub Case2_Cliquer()
c2 = ActiveSheet.CheckBoxes("Case 2").Value
c3 = ActiveSheet.CheckBoxes("Case 3").Value
c4 = ActiveSheet.CheckBoxes("Case 4").Value
If c2 = xlOff Then
ActiveSheet.CheckBoxes("Case 1").Value = xlOff
End If
If c2 = xlOn Then
If ((c3 = xlOn) And (c4 = xlOn)) Then
ActiveSheet.CheckBoxes("Case 1").Value = xlOn
End If
End If
End Sub
Sub Case3_Cliquer()
c2 = ActiveSheet.CheckBoxes("Case 2").Value
c3 = ActiveSheet.CheckBoxes("Case 3").Value
c4 = ActiveSheet.CheckBoxes("Case 4").Value
If c3 = xlOff Then
ActiveSheet.CheckBoxes("Case 1").Value = xlOff
End If
If c3 = xlOn Then
If ((c2 = xlOn) And (c4 = xlOn)) Then
ActiveSheet.CheckBoxes("Case 1").Value = xlOn
End If
End If
End Sub
Sub Case4_Cliquer()
c2 = ActiveSheet.CheckBoxes("Case 2").Value
c3 = ActiveSheet.CheckBoxes("Case 3").Value
c4 = ActiveSheet.CheckBoxes("Case 4").Value
If c4 = xlOff Then
ActiveSheet.CheckBoxes("Case 1").Value = xlOff
End If
If c4 = xlOn Then
If ((c3 = xlOn) And (c2 = xlOn)) Then
ActiveSheet.CheckBoxes("Case 1").Value = xlOn
End If
End If
End Sub