Показать полную графическую версию : Спойлер-кнопка
victor21043
25-02-2016, 17:03
Уважаемые пользователи портала,
У Меня есть active-кнопка с кодом:
Private Sub Button_Click()
With Button
.Caption = IIf(.Caption Like "*", "Close page", "English page")
Me.Shapes(1).Visible = .Caption Like "*"
End With
End Sub
Есть текстовое поле.
-Мне нужно, чтобы после нажатия -"открыть" (English page) "показывалось" текстовое поле, потом "закрывалось" (Close page)
-Нужно чтобы кнопка была интерактивна те при открытии сразу (чтобы не надо было всякий раз включать пользователю макросы итд)
Благодарю
Нужно чтобы кнопка была интерактивна при открытии сразу (чтобы не надо было всякий раз включать пользователю макросы итд) »
Групповой политикой понижаете безопасность макросов Office до «Низкой». Чего крайне не рекомендую делать.
-Мне нужно, чтобы после нажатия открыть (OPEN) показывалось текстовое поле, потом закрывалось (CLOSE) next i »
-Код надо как-то зациклить (for i if end if) »
Поясните подробнее.
victor21043
25-02-2016, 17:41
Я имею нерабочий спойлер
-При нажатии на кнопку "english page" поле данных(белое) "не скрывается"
-По структуре кода VBA не видно циклических операторов,получается код-макроса выполнится один раз?
Спасибо
(приложен конкретный образец). »
У меня Office 2003, посему могут быть отличия.
-При нажатии на кнопку "english page" поле данных(белое) "не скрывается" »
1. «- English page» — вижу не «кнопку», а «Рисунок».
2. «поле данных(белое)» — вижу «Надпись», а не поле данных.
3. Вижу процедуру обработки нажатия от несуществующего элемента управления «Button» несуществующей формы.
и т.д. Вполне возможно, что всё это есть издержки преобразования из 2010 .docm в 2003 .doc.
-(http://www.cyberforum.ru/vba/thread624214.html) »
Описание верно. Тамошний код работает. Токмо имейте в виду, что это таки не спойлер — место, занимаемое «Надписью», остаётся занятым (сравните, скажем с тутошним спойлером), что хорошо видно, если разместить «Надпись» не за или перед текстом, а в самом текстовом слое: 134408.
-По структуре кода VBA не видно циклических операторов,получается код-макроса выполнится один раз? »
Вы так и не пояснили, для чего там нужен цикл?
victor21043
26-02-2016, 14:55
Почему после конвертации в docm 2010 ничего не работает
Код не был изменён.
Код скорректирован(сommandbutton имя spoller)
Option Explicit
Private Sub spoller_Click()
With spoller
.Caption = IIf(.Caption Like "*", "Close page", "English page")
Me.Shapes(1).Visible = .Caption Like "*"
End With
End Sub
Думаю добавлять это не нужно »
«Option Explicit» — крайне желателен во всех проектах, дабы не делать нелепых ошибок.
Вот файл в формате 2003 не работает »
Работает. Неправильно, но работает.
Код скорректирован(сommandbutton имя spoller) »
.Caption = IIf(.Caption Like "*", "Close page", "English page")
«.Caption Like "*"»— всегда будет истинным, посему «.Caption»'у у Вас всегда будет присваиваться значение «"Close page"».
Та же самая ошибка и в следующей строке:
Me.Shapes(1).Visible = .Caption Like "*"
— «Shapes.Item(1)» у Вас всегда будет видимым.
Достаточно поменять условия на правильные:
Option Explicit
Private Sub spoller_Click()
With spoller
.Caption = IIf(.Caption = "Close page", "English page", "Close page")
Me.Shapes(1).Visible = .Caption = "Close page"
End With
End Sub
и код будет не просто работать, но и работать правильно.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC