PowerPoint (全般)

PowerPoint 全般に関する話題を扱うフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : PowerPoint 2016)
オブジェクトの表示⇔非表示
投稿日時: 18/10/25 16:02:38
投稿者: momo-k

選択されているオブジェクトの表示・非表示を
一つのボタンをクリックする毎に切り替えたいのですが
VBAですとどのようなコードになるか、ご存知の方いましたらお教えください
 
ホームタブ→配置→「オブジェクトの選択と表示」で一応行うことはできるのですが
一つひとつマウスでポチポチするのも大変で…
最終的にはクイックアクセスツールバーにて、そのコードをボタン配置して使用したいと考えております

回答
投稿日時: 18/10/25 17:55:42
投稿者: sk

引用:
選択されているオブジェクトの表示・非表示を
一つのボタンをクリックする毎に切り替えたいのですが
VBAですとどのようなコードになるか

(標準モジュール)
-------------------------------------------------------
Sub HideSelectedShapes()
 
    With Application.ActiveWindow.Selection
        If .Type = ppSelectionShapes Then
            .ShapeRange.Visible = False
        End If
    End With
     
End Sub
-------------------------------------------------------
 
引用:
ホームタブ→配置→「オブジェクトの選択と表示」で一応行うことはできるのですが
一つひとつマウスでポチポチするのも大変で…

非表示化されたオブジェクトの再表示に関しては
[すべて表示]をクリックなされば充分でしょう。

投稿日時: 18/10/26 00:45:24
投稿者: momo-k

skさん、返信ありがとうございます
  
いただきましたコードを試したところ
グループ化されているオブジェクトの内、一つだけを選択している場合
それだけを非表示することはできず、グループ化全てが非表示にされてしまいます
  
ごめんなさい…訂正になりますが
最終的にはクイックアクセスツールバーにてコードを配置し、キーボード(ショートカット)で
使用したいと考えておりますので、表示⇔非表示ができれば…と思います

回答
投稿日時: 18/10/26 09:48:23
投稿者: sk

引用:
グループ化されているオブジェクトの内、一つだけを選択している場合
それだけを非表示することはできず、グループ化全てが非表示にされてしまいます

(標準モジュール)
-------------------------------------------------------
Sub HideSelectedShapes()
 
    With Application.ActiveWindow.Selection
        If .Type <> ppSelectionShapes Then
            Exit Sub
        End If
         
        If .HasChildShapeRange Then
            .ChildShapeRange.Visible = False
        Else
            .ShapeRange.Visible = False
        End If
    End With
     
End Sub
-------------------------------------------------------
 
引用:
最終的にはクイックアクセスツールバーにてコードを配置し、
キーボード(ショートカット)で使用したいと考えておりますので、
表示⇔非表示ができれば…と思います

・選択中のオブジェクトを非表示化すると同時に
 オブジェクトの選択は解除されることになる。
 
・非表示化されているオブジェクトは選択できない。
 ([オブジェクトの選択と表示]ウィンドウから
 そのオブジェクトを選択するしかないし、
 選択すると同時にオブジェクトが再表示されるので
 わざわざプログラムで再表示する必要がない)
 
・したがって、選択中のオブジェクトを非表示化した時点で
 この処理は完結していると言ってよい。
 
・仮に何らかの形で非表示化されたオブジェクトへの参照を
 保持しておき、それらのオブジェクトを再表示化出来る
 ようにしておくとして、非表示化処理を実行してから
 別のオブジェクトが選択された場合
 どのオブジェクトを非表示化/再表示すべきか、
 という問題が生じることになる。
 
以上の問題をどのようにして解決されるつもりなのでしょうか。

投稿日時: 18/10/26 21:35:41
投稿者: momo-k

skさん、返信ありがとうございます
 
再度いただきましたコードを試したところ
問題なく動作いたしました。ありがとうございます
 
表示⇔非表示に関してはたしかに非表示されると選択解除され
再び表示させるのは困難ですね
もちろんウィンドウからオブジェクトを選択すれば再表示されますが
プログラムで再表示する必要がある理由については
はじめの質問で記述していますので省略させていただきます
 
なお再び表示させることについては
戻る(ctrl+z)で対応できるのでとりあえずはこれでやっていこうと思います
 
改めて対応いただきましてありがとうございます
感謝申し上げます