Показать полную графическую версию : [решено] Макрос Office 2013, with
victor21043
03-08-2017, 13:03
Уважаемый пользователи,
В файле есть несколько форм(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
В файле есть несколько форм »
Приложите к сообщению образец файла, упакованного в архив.
victor21043
03-08-2017, 23:35
Спасибо,
https://cloud.mail.ru/public/83W4/rZp2DPoc6
несколько форм(shape 1,2,3 итд) »
Рисунков?
к ним хочется применить единые правила оформления »
Так?
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
Не получается вынести повторяющиеся участки кода в отдельную процедуру-подпрограмму-ошибка компилятора,при инициализации кода макроса. »
Не могу понять вопроса. Возможно ещё и потому, что у меня более ранняя версия Microsoft Office.
victor21043
05-08-2017, 09:39
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, я ничего не могу сказать, поскольку а) не понимаю, что Вы хотите сделать и б) у меня другая верси Office.
К сожалению, у меня в ближайшее - до среды - время доступ только к смарту на Андроиде, посмотреть работу кода негде. В остальном - нечего добавить к словам Iska .
victor21043, в изначальном коде алгоритм пытается присвоить свойства одного экземпляра shape коллекции (совокупности) таких элементов, подобные задачи решаются перебором всех экземпляров коллекции и присваиванием значения свойства каждого экземпляра (то, что привел в коде Iska)
Так вот, мне не очень понятно, как сработал этот (правильный) код, ошибку вы приводите для него, или для своего? Цель вашей корректировки - привязать код к кнопке?
В вашем варианте N2 меня смущает строчка ActiveDocument.Shapes(N).Visible = msoTriStateToggle, на мой взгляд - работать не должна.
Попробуйте запустить код Iska пошагово, через нажатие в vba редакторе F8, отследите исполнение какой строчки кода вызывает ошибку, по возможности удалите эту строку дабы понять, будет ли работать остальная часть кода.
Если вы хотите привязать код к кнопке, просто замените заглавие Sub Sample() на Public Sub ButtonN_click()
PS мысли вслух: не имея возможности открыть ваш файл - вы уверены, что перебирать нужно коллекцию shapes?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2024, Jelsoft Enterprises Ltd.