Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   Спойлер-кнопка (http://forum.oszone.net/showthread.php?t=312016)

victor21043 25-02-2016 17:03 2610197

Спойлер-кнопка
 
Уважаемые пользователи портала,
У Меня есть 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)
-Нужно чтобы кнопка была интерактивна те при открытии сразу (чтобы не надо было всякий раз включать пользователю макросы итд)
Благодарю

Iska 25-02-2016 17:28 2610212

Цитата:

Цитата victor21043
Нужно чтобы кнопка была интерактивна при открытии сразу (чтобы не надо было всякий раз включать пользователю макросы итд) »

Групповой политикой понижаете безопасность макросов Office до «Низкой». Чего крайне не рекомендую делать.

Цитата:

Цитата victor21043
-Мне нужно, чтобы после нажатия открыть (OPEN) показывалось текстовое поле, потом закрывалось (CLOSE) next i »

Цитата:

Цитата victor21043
-Код надо как-то зациклить (for i if end if) »

Поясните подробнее.

victor21043 25-02-2016 17:41 2610219

Я имею нерабочий спойлер
-При нажатии на кнопку "english page" поле данных(белое) "не скрывается"
-По структуре кода VBA не видно циклических операторов,получается код-макроса выполнится один раз?

Спасибо

Iska 25-02-2016 20:51 2610310

Вложений: 1
Цитата:

Цитата victor21043
(приложен конкретный образец). »

У меня Office 2003, посему могут быть отличия.

Цитата:

Цитата victor21043
-При нажатии на кнопку "english page" поле данных(белое) "не скрывается" »

1. «- English page» — вижу не «кнопку», а «Рисунок».
2. «поле данных(белое)» — вижу «Надпись», а не поле данных.
3. Вижу процедуру обработки нажатия от несуществующего элемента управления «Button» несуществующей формы.
и т.д. Вполне возможно, что всё это есть издержки преобразования из 2010 .docm в 2003 .doc.

Цитата:

Цитата victor21043

Описание верно. Тамошний код работает. Токмо имейте в виду, что это таки не спойлер — место, занимаемое «Надписью», остаётся занятым (сравните, скажем с тутошним спойлером), что хорошо видно, если разместить «Надпись» не за или перед текстом, а в самом текстовом слое: Файл 134408.

Цитата:

Цитата victor21043
-По структуре кода VBA не видно циклических операторов,получается код-макроса выполнится один раз? »

Вы так и не пояснили, для чего там нужен цикл?

victor21043 26-02-2016 14:55 2610515

Почему после конвертации в 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

Iska 26-02-2016 16:42 2610543

Цитата:

Цитата victor21043
Думаю добавлять это не нужно »

«Option Explicit» — крайне желателен во всех проектах, дабы не делать нелепых ошибок.

Цитата:

Цитата victor21043
Вот файл в формате 2003 не работает »

Работает. Неправильно, но работает.

Цитата:

Цитата victor21043
Код скорректирован(с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

и код будет не просто работать, но и работать правильно.


Время: 22:05.

Время: 22:05.
© OSzone.net 2001-