Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2013 - [решено] Макрос Office 2013, with

Ответить
Настройки темы
2013 - [решено] Макрос Office 2013, with

Пользователь


Сообщения: 94
Благодарности: 2


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: victor21043
Дата: 11-08-2017
Уважаемый пользователи,

В файле есть несколько форм(shape 1,2 итд),к ним хочется применить единые правила оформления и сократить код.

Не получается вынести повторяющиеся участки кода в отдельную процедуру-подпрограмму-ошибка компилятора,при инициализации кода макроса.

Есть возможность реализовать это на языке VBA?

Благодарю,всего доброго Вам,
Код: Выделить весь код
Sub style
With ActiveDocument.Shapes() rem () все формы в проекте
.Visible = msoTriStateToggle
.BackgroundStyle = msoBackgroundStylePreset10
N-1,2,3 итд
Код: Выделить весь код
 Public Sub ButtonN_click()
Call style
end sub

Отправлено: 13:03, 03-08-2017

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата victor21043:
В файле есть несколько форм »
Приложите к сообщению образец файла, упакованного в архив.

Отправлено: 13:50, 03-08-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 94
Благодарности: 2

Профиль | Отправить PM | Цитировать


Спасибо,
HTML код: Выделить весь код
https://cloud.mail.ru/public/83W4/rZp2DPoc6


Последний раз редактировалось victor21043, 11-08-2017 в 09:14.


Отправлено: 23:35, 03-08-2017 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата victor21043:
несколько форм(shape 1,2,3 итд) »
Рисунков?

Цитата victor21043:
к ним хочется применить единые правила оформления »
Так?
Скрытый текст
Код: Выделить весь код
Sub Sample()
    Dim objShape As Shape
    
    For Each objShape In ThisDocument.Shapes
        With objShape
            .Visible = msoTriStateToggle
            .BackgroundStyle = msoBackgroundStylePreset10
            
            With .Reflection
                .Type = msoReflectionType1
                .Transparency = 0.5
                .Size = 22
                .Offset = 0
            End With
        End With
    Next objShape
End Sub

Цитата victor21043:
Не получается вынести повторяющиеся участки кода в отдельную процедуру-подпрограмму-ошибка компилятора,при инициализации кода макроса. »
Не могу понять вопроса. Возможно ещё и потому, что у меня более ранняя версия Microsoft Office.

Отправлено: 09:46, 04-08-2017 | #4


Пользователь


Сообщения: 94
Благодарности: 2

Профиль | Отправить PM | Цитировать


Run time error 445-Объект не поддерживает такого действия

Код: Выделить весь код
Sub style()
Dim objShape As Shape

     For Each objShape In ThisDocument.Shapes
        With objShape
            .BackgroundStyle = msoBackgroundStylePreset10     
            With .Reflection
                .Type = msoReflectionType1
                .Transparency = 0.5
                .Size = 22
                .Offset = 0
            End With
        End With
    Next objShape
End Sub

 Public Sub ButtonN_click()
ActiveDocument.Shapes(N).Visible = msoTriStateToggle
Call style
end sub

Последний раз редактировалось victor21043, 07-08-2017 в 18:59.


Отправлено: 09:39, 05-08-2017 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


victor21043, я ничего не могу сказать, поскольку а) не понимаю, что Вы хотите сделать и б) у меня другая верси Office.

Отправлено: 09:51, 05-08-2017 | #6


Динохромный


Contributor


Сообщения: 690
Благодарности: 317

Профиль | Отправить PM | Цитировать


К сожалению, у меня в ближайшее - до среды - время доступ только к смарту на Андроиде, посмотреть работу кода негде. В остальном - нечего добавить к словам Iska .

victor21043, в изначальном коде алгоритм пытается присвоить свойства одного экземпляра shape коллекции (совокупности) таких элементов, подобные задачи решаются перебором всех экземпляров коллекции и присваиванием значения свойства каждого экземпляра (то, что привел в коде Iska)

Так вот, мне не очень понятно, как сработал этот (правильный) код, ошибку вы приводите для него, или для своего? Цель вашей корректировки - привязать код к кнопке?

В вашем варианте N2 меня смущает строчка ActiveDocument.Shapes(N).Visible = msoTriStateToggle, на мой взгляд - работать не должна.

Попробуйте запустить код Iska пошагово, через нажатие в vba редакторе F8, отследите исполнение какой строчки кода вызывает ошибку, по возможности удалите эту строку дабы понять, будет ли работать остальная часть кода.

Если вы хотите привязать код к кнопке, просто замените заглавие Sub Sample() на Public Sub ButtonN_click()

PS мысли вслух: не имея возможности открыть ваш файл - вы уверены, что перебирать нужно коллекцию shapes?
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:48, 05-08-2017 | #7



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2013 - [решено] Макрос Office 2013, with

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Наборы - MS Office 2013 PreSP2, Office 2010 PreSP3, Office 2007 PreSP4 и Office 2003 PreSP4 sklart Наборы обновлений для Windows XP/2003/Windows 7 1471 13-03-2024 01:01
Вредоносный макрос в документах Office нашёл новые способы избежать обнаружения OSZone News Новости информационных технологий 0 09-06-2016 16:30
Использование - Office Professional 2013 для Win & Office for Mac Standard 2011 Looking Лицензирование продуктов Microsoft 1 08-09-2015 01:25
2013 - Акция :Купи Office 2010 получи Office 2013 gudwin_oz Microsoft Office (Word, Excel, Outlook и т.д.) 3 14-06-2013 17:14
Microsoft официально выпустила Office 2013 и Office 365 OSZone News Новости и события Microsoft 0 30-01-2013 18:30




 
Переход