Макрос VBA в PowerPoint 2016 работает в обычном режиме, а не в режиме слайд-шоу - PullRequest
1 голос
/ 11 октября 2019

Новое в VBA для ppt. (раньше делал больше Excel vba). Приведенный ниже макрос действительно прост и отлично работает в обычном режиме, когда я запускаю его в редакторе VBA в PowerPoint. (Добавит синюю форму прямоугольника в центр экрана)

Чтобы работать в режиме слайд-шоу, я назначил макрос случайной форме с помощью параметра настройки действия, но на самом деле ничего не происходит. Спасибо

Sub Rdmrectangle()

Dim sld As Slide
Dim shp As Shape
Dim SlideIndex As Long

SlideIndex = ActiveWindow.View.Slide.SlideIndex

Set sld = ActivePresentation.Slides(SlideIndex)

Set shp = sld.Shapes.AddShape(Type:=msoShapeRectangle, _
    Left:=50, Top:=50, Width:=100, Height:=200)

With ActivePresentation.PageSetup
shp.Left = (.SlideWidth \ 2) - (shp.Width \ 2)
shp.Top = (.SlideHeight \ 2) - (shp.Height \ 2)
End With

shp.Fill.ForeColor.RGB = vbBlue

shp.ZOrder msoBringToFront
End Sub

1 Ответ

0 голосов
/ 11 октября 2019

Если вам нужно это для работы в режиме слайд-шоу, вы можете работать с ActivePresentation.SlideShowWindow.View.

Sub Rdmrectangle()

    Dim sld As slide
    Set sld = ActivePresentation.SlideShowWindow.View.Slide

    Dim shp As Shape
    Set shp = sld.Shapes.AddShape(Type:=msoShapeRectangle, _
        Left:=50, Top:=50, Width:=100, Height:=200)

    With ActivePresentation.PageSetup
        shp.Left = (.SlideWidth \ 2) - (shp.Width \ 2)
        shp.Top = (.SlideHeight \ 2) - (shp.Height \ 2)
    End With

    shp.Fill.ForeColor.RGB = vbBlue
    shp.ZOrder msoBringToFront
End Sub
...