Visibleプロパティの使用例
題名の通りです。何か書き残したことはないかと思ってて思い当たったので,寝る前に!
マクロですべての図形を思い通りの場所に書いていってということをすると,大変長くなります。
せっかくPowerpointはVBA無くても優れたソフトなのに,それはあんまりです。
なので,まず必要な図を描いたうえでどうにかする,そういう時に役に立つのがVisibleプロパティ
用意しておいて表示/非表示を制御すれば 見た目にはすごくがんばってるように見える。
化学反応式のシミュレーションのとこで使ってたのを思い出したので,そこだけ急いで作ってみました。とっても雑な記事ですが,
なーんだ簡単じゃないかと思って使う人がいれば幸い。
寝なきゃいけないので詳しい説明はしません。
コードとこの図を見ればなんとなく伝わるかと思います。
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プロパティを操作しているだけです。
なんとなくがんばってるように見えます。
このプロパティのいいところはほんと,前準備をいろいろがんばって 見えるようにしたり消したりを組み合わせるとかなりのことができるところ。
ついでに 重なり順までいじれば可能性はもっと広がります。
どたばたエントリですみません。
でも書くのは好きなので書きました。
寝ないと(;´▽`A`` thomさんのソートの解説は,明日見せてもらいますー。楽しみだ(゚▽゚*)