Powerpoint VBAを使おう!

Powerpoint VBAやExcelのVBAで遊んでいます。Word VBAも始めました。

Visibleプロパティの使用例

題名の通りです。何か書き残したことはないかと思ってて思い当たったので,寝る前に!

マクロですべての図形を思い通りの場所に書いていってということをすると,大変長くなります。

せっかくPowerpointVBA無くても優れたソフトなのに,それはあんまりです。

なので,まず必要な図を描いたうえでどうにかする,そういう時に役に立つのがVisibleプロパティ

用意しておいて表示/非表示を制御すれば 見た目にはすごくがんばってるように見える。

化学反応式のシミュレーションのとこで使ってたのを思い出したので,そこだけ急いで作ってみました。とっても雑な記事ですが,

なーんだ簡単じゃないかと思って使う人がいれば幸い。

f:id:chemiphys:20170111001705p:plain
寝なきゃいけないので詳しい説明はしません。

コードとこの図を見ればなんとなく伝わるかと思います。

Option Explicit

Sub 準備()
    Dim TSlide As Slide: Set TSlide = ActivePresentation.Slides(1)
    Dim i As Long
    
    For i = 1 To 8
        TSlide.Shapes("分子1" & i).Visible = msoFalse
    Next
    TSlide.Shapes("分子11").Visible = msoTrue
    
    Dim TRng As TextRange: Set TRng = TSlide.Shapes("係数込分子式").TextFrame.TextRange
    
    TRng = "H2S"
    TRng.Characters(2).Font.Subscript = msoTrue
End Sub

Sub 係数増減(図形 As Shape)
    Dim TSlide As Slide: Set TSlide = ActivePresentation.Slides(1)
    Dim TRng As TextRange: Set TRng = TSlide.Shapes("係数込分子式").TextFrame.TextRange
    Dim i As Long
    
    If IsNumeric(Left(TRng, 1)) = True Then
        i = CLng(Left(TRng, 1))
        TRng = i & "H2S"
        TRng.Characters(3).Font.Subscript = msoTrue
        
    Else
        i = 1
        TRng = "H2S"
        TRng.Characters(2).Font.Subscript = msoTrue
    End If
    
    If 図形.Name = "上" Then
        i = i + 1
        If i > 8 Then i = 8
        TSlide.Shapes("分子1" & i).Visible = msoTrue
    Else
        i = i - 1
        If i < 1 Then i = 1
        TSlide.Shapes("分子1" & i + 1).Visible = msoFalse
        
    End If
    
    If i = 1 Then
        TRng = "H2S"
        TRng.Characters(2).Font.Subscript = msoTrue
    Else
        TRng = i & "H2S"
        TRng.Characters(3).Font.Subscript = msoTrue
    End If
    
End Sub

まず準備ボタンを押すと 準備マクロが動くように,動作設定をしておきます。

まず 分子11~分子18を一度見えなくして,分子11だけ見えるようにという操作です。

テキストボックスに長い名前がついていますが,そこにはH2Sという分子式

上,下ボタンには 係数増減という同じマクロを割り当てます。ボタンの名前で動作を分岐させる。

係数は テキストボックスの一番左の文字を取り出して,数字ならそれが係数。数字じゃないなら 係数省略している状態と判断して1と決めています。

あとは,該当の図形のVisibleプロパティを操作しているだけです。

f:id:chemiphys:20170111002232g:plain

なんとなくがんばってるように見えます。

このプロパティのいいところはほんと,前準備をいろいろがんばって 見えるようにしたり消したりを組み合わせるとかなりのことができるところ。

ついでに 重なり順までいじれば可能性はもっと広がります。

どたばたエントリですみません。

でも書くのは好きなので書きました。

寝ないと(;´▽`A`` thomさんのソートの解説は,明日見せてもらいますー。楽しみだ(゚▽゚*)