none
PowerPointのコマンドボタンが意図したように機能しない RRS feed

  • 質問

  • Office365でPowerPointを使用しています。

    テキストボックスに質問を記載し、それに対して「Yes」と「No」2つのコマンドボタン(Active X)を設置し、その回答によって異なる内容のQ2とそれに対する「Yes」「No」を表示し、その解答に対して新たにQ3が表示される…というチャート式のシートを作成したいと思っています。

    Q1とその「Yes」「No」は常時表示、Q2以下はスライドを開いた時点では非表示で、前問の回答によって表示されるという形にします。また、「チャートのクリア」のコマンドボタンををクリックすると、Q1とその「Yes」「No」だけが表示されている初期状態に戻します。

    Q1の「Yes」「No」ボタンをクリックし、それぞれQ2とその「Yes」「No」ボタンを表示することは下記のようなVisibleのTrue,Falseで実現できました。

    Private Sub Q1No_Click()
    Dim TSlide As Slide
    Set TSlide = ActivePresentation.Slides(2)
     TSlide.Shapes("Q2").Visible = msoTrue
     TSlide.Shapes("Q2Yes").Visible = msoTrue
     TSlide.Shapes("Q2No").Visible = msoTrue
    End Sub

    ① Q1の「Yes」「No」をクリックしてQ2とその「Yes」「No」を表示させることは問題ないのですが、表示されたQ2の「Yes」「No」をクリックすると次のスライドに移動してしまいます。再度元のスライドに戻して「Yes」「No」をクリックすると、それぞれのQ3が正しく表示されます。Q2の「Yes」「No」をクリックしたときに、それぞれのボタンのVBAよりも先に左クリックによる「次のページへ」が実行されているように思うのですが、これを回避するにはどのようにしたら良いでしょうか?。

    ②「チャートのクリア」をクリックすると、Q1とQ1に対する「Yes」「No」のコマンドボタン以外はすべて非表示にしたいと思い、下記のように記述しました。

    Private Sub チャートのクリア_Click()
    Dim TSlide As Slide
    Set TSlide = ActivePresentation.Slides(2)
     TSlide.Shapes("Q1").Visible = msoTrue
     TSlide.Shapes("Q2").Visible = msoFalse
     TSlide.Shapes("Q1Yes").Visible = msoTrue
     TSlide.Shapes("Q2Yes").Visible = msoFalse
     TSlide.Shapes("Q1No").Visible = msoTrue
     TSlide.Shapes("Q2No").Visible = msoFalse
    End Sub

    これを実行すると"Q2"は非表示になるのですが、コマンドボタンの"Q2Yes"と”Q2No"は表示されたままです。但し、いったん前後のスライドに移動してから戻ると表示が消えています。コマンドボタンについてもスライドを前後に移動せず、そのまま非表示にするにはどうしたらよいでしょうか?

    AccessではそこそこVBAを使ってきたつもりなのですが、オブジェクトのプロパティやアクションのタイミングなど、同じVBAでもやはり勝手が異なり戸惑っています。アドバイスいただければ幸いです。よろしくお願いします。

    2020年4月7日 11:38