Здравствуйте. Имеются две кнопки CommandButton и ToggleButton. Необходимо, чтобы при вызове события CommandButton_Click значение ToggleButton принимало True, но при этом не срабатывал макрос в событии ToggleButton_Click. Можно ли это как-то реализовать?
Добавлено: событие ToggleButton_Click должно работать, при нажатии на сам выключатель, когда его значение false.
Код
Option Explicit
Private Sub CommandButton1_Click()
ToggleButton1.Value = True
End Sub
Private Sub ToggleButton1_Click()
If ToggleButton1.Value = True Then
With ToggleButton1
.BackColor = vbYellow
.Caption = "Выйти"
End With
Else
With ToggleButton1
.Caption = "Войти"
.BackColor = -2147483633
End With
End If
MsgBox "ToggleButton.Value должно быть True, но макрос не должнен работать и это сообщение не должно появляться!"
End Sub
Dim bFlag As Boolean
Private Sub CommandButton1_Click()
bFlag = True
ToggleButton1.Value = True
bFlag = False
End Sub
Private Sub ToggleButton1_Click()
If bFlag = False Then
........................
vikttur, к сожалению ваш макрос не все условия учитывает. Событие самого ToggleButton не работает. bFlag в значении False. И при нажатии на "выключатель" да, работает какой-то макрос привязанный к выключателю, но при его отключении (отжатии) другой макрос или другое условие не работает.
НСС написал: чтобы при вызове события CommandButton_Click значение ToggleButton принимало True, но при этом не срабатывал макрос в событии ToggleButton_Click.
Это есть. Выключатель в True. Надпись Войти/Выйти не менялась, но Вы сами так пожелали. Если до этого было Value=True, то кнопка сработает на переключение при нажатии, если было Value=False, то теперь кнопку нужно нажать два раза.
1. нажатие кнопки вызывает → нажатие выключателя → изменение Caption выключателя на "выйти" - решено! 2. нажатие выключателя вызывает → изменение его Caption на "выйти" - не решено. 3. отжатие выключателя вызывает → изменение его Catpion на "войти" - не решено.
п.2 и 3 - как работал выключатель, так и работает. п.1 - нажали кнопку - перевели выключатель в True, но НЕ МЕНЯЛИ надпись на кнопке!!! Вы же сами писали, что макрос не должен сработать! Т.е. пр нажатии на кнопку хоть 100 раз ни надпись, ни цвет меняться не должны.
Надо не мультики показывать, а пример с измененным кодом. То, что я Вам показал - там надпись НЕ МЕНЯЕТСЯ! Как она может меняться, если Вы сами писали - макрос не должен выполняться?!
Опишите в первом сообщении НОРМАЛЬНО задачу. Для чего это и как должно быть, все остальное удалю. Иначе бред сивой кобылы получается, а не объяснение. По логике - да, при изменении значения и надпись надо менять. Но Вы же писали - не менять. Не прямо так писали, но - макрос не должен выполняться. А как изменится надпись? Ветром?
vikttur, похоже, что мы оба запутались. Я в ваше условие
Код
If bFlag = False Then
' здесь блок строк, которые не должны срабатывать
End If
Вставил Else. Но это не суть важно, т.к. после работы события кнопки выключатель перестает работать. А нужно, чтобы он работал. Кнопка его нажимает, но и отключает возможность работать с выключателем в отдельности. Полагаю, что эту задачу нельзя решить, т.к. условия друг другу противоречат.
Как Вы там чего навставляли - одному Вам известно.
Цитата
условия друг другу противоречат.
Это Ваше описание противоречит логике.
Как я понимаю, работать должно так. При нажатии кнопки выполняется макрос ToggleButton1, как будто ToggleButton1.Value = False, независимо от того, в каком положении находится ToggleButton1 Т.е. : .Value принимает значение True, надпись и цвет должны соотетствовать True
Правильно описана задача? Тогда так:
Код
Private Sub CommandButton1_Click()
ToggleButton1.Value = False
End Sub
Private Sub ToggleButton1_Click()
With ToggleButton1
If .Value = True Then
.BackColor = vbYellow
.Caption = "Âûéòè"
Else
.BackColor = -2147483633
.Caption = "Âîéòè"
End If
End With
End Sub
vikttur, есть кнопка "регистрация" для регистрации нового пользователя и выключатель для входа уже зарегистрированных пользователей. И кнопка "регистрация" и выключатель вызывают одну и туже форму, в которой пользователь вводит свои данные. Если это новый пользователь, то он нажимает на кнопку "регистрация", вводит свои данные и, соответственно, идет проверка отсутствие его данных и, далее, регистрация. Форма регистрации закрывается и выключатель принимает нажатое положение с Caption "Выйти". При этом не должен сработать макрос вызова формы авторизации, которая привязана к выключателю. Должно измениться только название и его BackColor.
И вот этот новый, только что зарегистрированный пользователь, сделал некоторые действия и решает выйти, отжав выключатель. И вот тут, надпись этого выключателя должна измениться на "Войти" (для других зарегистрированных пользователей), он должен отжаться, приняв Value = False, и (или) сработать какой-то еще макрос привязанный к его Value = False.
И вот так нельзя было описать в первом сообщении? Нельзя было подготовить нормальный пример? Блин, ну, мастер объяснений... Поледний код проверили? Если что-то опять не так, создайте тему с нормальным описанием и примером.
Если код в сообщении №12 или подсказка в сообщении №15 не помогают, создавайте тему. Но, ради всекх форумных святых! Создайте нормальный пример и описание. Не бросайтесь в другую крайность, не нужна форма со всей ее начинкой. только то, что поможет в объяснении задачи