Как отжать все эти ToggleButtons понятно, но как, при нажатии на ToggleButton1 на форме, "отжать" все остальные ToggleButton, при этом оставить значение ToggleButton1 = true? Подскажите?
В примере, все ToggleButton отжимаются, т.е. принимают значение false.
Private Sub ToggleButton1_Click()
Dim x As Control
Application.EnableEvents = False
For Each x In UserForm1.Controls
If TypeOf x Is msforms.ToggleButton Then x.Value = False
Next
ToggleButton1 = True
Application.EnableEvents = True
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Private Sub ToggleButton1_Click()
Dim x As Control
For Each x In UserForm1.Controls
If TypeOf x Is msforms.ToggleButton _
And x.Name <> "ToggleButton1" Then x.Value = False
Next
ToggleButton1 = True
End Sub
Теперь другая проблема. Если добавить макрос в ToggleButton3, например, то опять появляется сообщение Out of stack space. Т.е. в два ToggleButton добавил макрос.
Код
Option Explicit
Private Sub ToggleButton1_Click()
Dim x As Control
Application.EnableEvents = False
For Each x In UserForm1.Controls
If TypeOf x Is msforms.ToggleButton _
And x.Name <> "ToggleButton1" Then x.Value = False
Next
ToggleButton1 = True
Application.EnableEvents = True
End Sub
Код
Private Sub ToggleButton3_Click()
Dim x As Control
Application.EnableEvents = False
For Each x In UserForm1.Controls
If TypeOf x Is msforms.ToggleButton _
And x.Name <> "ToggleButton3" Then x.Value = False
Next
ToggleButton3 = True
Application.EnableEvents = True
End Sub
ToggleButton1 = True 'нафига это? Всегда делать его нажатым?
Код
Option Explicit
Dim IsNonEvents as boolean
Private Sub ToggleButton1_Click()
if ToggleButton1 = false then exit sub 'ничего не делаем, если кнопка была отжата
if IsNonEvents then exit sub
Dim x As Control
For Each x In UserForm1.Controls
If TypeOf x Is msforms.ToggleButton then
IsNonEvents = True
if x.Name <> "ToggleButton1" Then x.Value = False
IsNonEvents = false
end if
Next
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...