Powerpoint VBA, устанавливающий форму ComandButton в Hidden - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть макрос, который просматривает все фигуры на слайде и скрывает фигуры, которые соответствуют определенным именам. Моя коллекция фигур включает в себя смесь стандартных фигур и кнопок Command.

Командные кнопки имеют в свойстве «Видимое» свойство «Ложь» в окне свойств, и они не отображаются на экране редактирования powerpoint, но остаются видимыми в представлении «Слайд-шоу». Эта проблема не возникает, когда я пропускаю переменную формы (sh.Visible) и обращаюсь непосредственно к командной кнопке (startB.Visible). Смотрите ниже:

For Each sh In ActivePresentation.Slides(1).Shapes
    If sh.Name = "startB" Then
        sh.Visible = False
    End If
Next

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Я предполагаю, что это потому, что фигура является лишь компонентом командной кнопки. Как обходной путь, я получил это, хотя я не уверен на 100%, почему это происходит:

If sh.Name = "startB" Then
    sh.OLEFormat.Object.Visible = False
End If

Который работает нормально. Я немного растерялся, потому что я привык к Excel, где я мог напрямую ссылаться на вещи как OLEObject.Object, но даже если вы все еще ссылаетесь на OLEObjects, OLEFormat кажется немного другим. Просто некоторые проблемы обвивают мою голову.

0 голосов
/ 05 ноября 2018

При циклическом прохождении фигур необходимо проверять имя элемента управления формы относительно объекта. Я добавил первый оператор If, чтобы проверить тип фигуры. Затем второй If получит доступ к OLEFormat Object Name.

If sh.Type = msoOLEControlObject Then
    If sh.OLEFormat.Object.Name = "startB" Then
        sh.Visible = False        
    End If
End If
...