見出し画像

【パワーポイント/PowerPoint】パワーポイントで任意の順序で図形の表示,非表示を行う方法

パワーポイントでスライドの様々な要素(図形や絵)を任意の順序で表示,非表示をしたいことありませんでしょうか。

パワーポイントのアニメーションは決められた順番で実行され,任意の順序で実行ができません。

※私が知らないだけで,方法があればご教示ください。

決められた順序ではなく,任意で表示,非表示をしたい場合の方法としてマクロで実現できます。

図形表示非表示マクロの前提条件

管理人はマクロに関しては素人です。偉い人はマクロ素人からマクロを学ぶのは危険だと警鐘を鳴らしています。

本コードは素人が作成したものということをご了承ください。備忘録として記事にしています。

注意!
⚠本記事に記載したコードの前提条件となっています。⚠
図形やチェックボックス,ボタンの名前,オブジェクト名,スライド番号が赤枠の設定になっていなければ機能しませんのでご注意ください。設定確認は下の図を確認してください。

【チェックボックス:図形の表示/非表示の前提条件】
表示非表示をしたい図形名:図1
チェックボックスのオブジェクト名:CheckBox
表示非表示をしたい図形があるスライド:1ページ

【ボタン:図形の表示/非表示の前提条件】
表示非表示をしたい図形名:図2
ボタンのオブジェクト名:Button
表示非表示をしたい図形があるスライド:1ページ

図形表示非表示マクロのコード

Option Explicit

'チェックボックスをチェックを入れると図形が表示される
Sub CheckBox_Click()

    Dim strName As String
    Dim objCheck As Object
    Dim sldSlide As Slide

   '表示/非表示をする図形の名前を設定
    strName = "図1"

    'チェックボックスの名前を設定
    Set objCheck = CheckBox

    '表示/非表示したいスライド番号を設定 ()の番号がスライド番号
    Set sldSlide = ActivePresentation.Slides(1)

    'CheckBoxのチェックを入れたときに実行されるマクロを呼出す
    Call actCheck(strName, objCheck, sldSlide)

End Sub

'チェックボックスのチェックを入れたときに実行されるマクロ
Sub actCheck(ByVal strName, objCheck, sldSlide)

    'チェックボックスがチェックが入っている状態(value= True)
    If objCheck.Value = True Then

        'sldSlideのスライド番号のstrNameの図を表示する
        sldSlide.Shapes(strName).Visible = True

    'チェックボックスがチェックが入っていない状態(value= False)
    Else
        'sldSlideのスライド番号のstrNameの図を非表示にする
        sldSlide.Shapes(strName).Visible = False

    End If

End Sub

'ボタンを押すと図形が表示される
Sub Button_Click()

    Dim strName As String
    Dim objButton As Object
    Dim sldSlide As Slide

    '表示/非表示をする図形の名前を設定
    strName = "図2"

    'ボタンの名前
    Set objButton = Button

    '表示/非表示したいスライド番号を設定 ()の番号がスライド番号
    Set sldSlide = ActivePresentation.Slides(1)

    'ボタンを押したとき実行されるマクロを呼出す
    Call actButton(strName, objButton, sldSlide)
End Sub

'ボタンを押したとき実行されるマクロ
Sub actButton(ByVal strName, objButton, sldSlide)

    'ボタンが押された状態(value= True)
    If objButton.Value = True Then
 
        'sldSlideのスライド番号のstrNameの図を表示する
        sldSlide.Shapes(strName).Visible = True

    'ボタンが押されていない状態(value= False)
    Else
        'sldSlideのスライド番号のstrNameの図を非表示にする
        sldSlide.Shapes(strName).Visible = False

   End If

End Sub

図形表示非表示マクロのコードの説明

チェックボックスをチェックを入れると図形が表示される
Sub CheckBox_Click()

CheckBox_Clickはチェックボックスをクリックしてボタンを離したときマクロが実行されます。ここにはトリガーとなるチェックボックスの名前が必要になります。

    Dim strName As String
    Dim objCheck As Object
    Dim sldSlide As Slide

それぞれ変数宣言します。Stringは文字列型,Objectはオブジェクトとして,Slideはスライドという型でしょうか?よくわかりませんでした。

   '表示/非表示をする図形の名前を設定
    strName = "図1"

    'チェックボックスの名前を設定
    Set objCheck = CheckBox

    '表示/非表示したいスライド番号を設定 ()の番号がスライド番号
    Set sldSlide = ActivePresentation.Slides(1)

次にそれぞれ変数宣言したものに図形やチェックボックスの名前,スライド番号を入れていきます。スライド番号は括弧内の番号を変更すればよいです。

表示/非表示を行いたい図形の名前が図1となっているか,チェックボックスのオブジェクト名がCheckBoxとしてください。

    'CheckBoxのチェックを入れたときに実行されるマクロを呼出す
    Call actCheck(strName, objCheck, sldSlide)

End Sub

コメントアウトで記述している通り,表示/非表示を行うマクロを呼び出します。ここではactButtonというマクロを実行します。

括弧内は変数に代入した値を呼び出し先のマクロで使用する場合に記述します。引数渡しと言うそうです。

'チェックボックスのチェックを入れたときに実行されるマクロ
Sub actCheck(ByVal strName, objCheck, sldSlide)

呼出された実行マクロです。

括弧内は呼び出されたマクロで変数に代入された値を受け取ることを意味します。

ByValと記述する必要があるみたいです。値渡しと言うそうです。

    'チェックボックスがチェックが入っている状態(value= True)
    If objCheck.Value = True Then

objCheckはCheckBox(チェックボックス)が代入されており,チェックボックスの状態がどのようになっている判定しています。valueがTrueならチェックが入っている状態を意味しています。

    'sldSlideのスライド番号のstrNameの図を表示する
    sldSlide.Shapes(strName).Visible = True

先の判定でチェックボックスにチェックが入っている場合は,sldSlideはアクティブ状態のスライド1ページが代入されています。strNameは図1が代入されています。Visibleは図形の表示/非表示の設定を行うプロパティです。Trueは表示状態です。つまり,

ここで『スライド1ページ目』の『図1』を『表示』させます。

    'ボタンが押されていない状態(value= False)
    Else
        'sldSlideのスライド番号のstrNameの図を非表示にする
        sldSlide.Shapes(strName).Visible = False

   End If

End Sub

反対にここではVisibleがFalseなので,『スライド1ページ目』の『図1』を『非表示』させます。

以上がコードの説明でした。ボタンに関してはチェックボックスとほぼ変わらないので割愛します。

さいごに

仕事でパワポにマクロを組み込む必要があったため,急遽勉強して実際に仕事で使用しています。マクロを勉強したいと思っていたこともあり,いい機会だったと思っています。

備忘録という意味で記事を作成していますが,作ったコードは『マクロ素人』が作成したものですので,参考程度くらいに思っていただけると幸いです。


【プロフィール】
名前:OniLogNet
生産技術系のエンジニアです。日々,計装関係の仕事に従事しています。 生産技術系ブログ【OniLogNet】を運営中。主に計装設計についてまとめています。また仕事の時短ワザなども紹介しています。計装技術については初心者でもわかりやすくをモットーに執筆中!

Twitterもやっています。

この記事が気に入ったらサポートをしてみませんか?