2014-01-06 3 views
1

У меня есть макрос, который должен сделать каждую фигуру на странице видимой (у меня есть другие макросы, которые делают их невидимыми). Вот код:PowerPoint 2013 Macro Runs Slow (проблема перерисовки?)

Dim Slide As Integer 
Slide = SSW.View.CurrentShowPosition 
If Slide = 1 Then 
    For Each shp In ActivePresentation.Slides(2).Shapes 
     shp.Visible = True 
    Next shp 
End if 

Этот макрос принимает навсегда бежать. Я подозреваю, что это происходит потому, что он перерисовывает экран каждый раз, когда форма становится видимой.

Это необязательно, на самом деле слайд даже не отображается на экране при выполнении этого макроса (он работает на слайде 1, но делает фигуры на слайде 2 видимыми). Есть ли способ ускорить этот запуск? Отключить обновление экрана или что-то еще?

Я попробовал решение Shyam от http://www.vbaexpress.com/forum/showthread.php?33671-Solved-PP2010-ScreenUpdating-False, но это не сработает. Он подходит только к 2010 году, и я использую 2013 год.

ответ

0

Ваш код не работает, как показано. Я изменил его к этому, который работает в значительной степени мгновенно на слайде с 175 формами:

' Put this at the top of every module; builds character, keeps you out of trouble 
Option Explicit 

Sub ThisWorks() 

' Always dim ALL variables 
Dim Slide As Long ' SlideIndex is a Long, not an Integer 
Dim oSh As Shape 

' Replaced your SSW with this: 
Slide = SlideShowWindows(1).View.CurrentShowPosition 
If Slide = 1 Then 
    For Each oSh In ActivePresentation.Slides(2).Shapes 
     ' I was toggling them back and forth as a test 
     ' oSh.Visible = Not oSh.Visible 
     oSh.Visible = True 
    Next 
End If 

' Delete this when it's no longer needed 
MsgBox "Done" 

End Sub 
+0

Причина код не работает, я забыл включить строку, чтобы установить переменную SSW в SlideShowWindows (1). Я сейчас не работаю, завтра я попробую ваш новый код и дам вам знать, работает ли он. Благодаря! – vkapadia

+0

Теперь работает лучше, спасибо! – vkapadia

Смежные вопросы