インストールレスプログラミング( ´ー`)

VBA , JavaScript , HTAなど 365アプリはインストール必要ですが、仕事に無いケースはほぼないから(・_・;)

Powerpoint VBA 表で遊んでみる。

化学反応式の量的関係,と呼ばれる話が化学基礎にあります。

表で説明していったりするんですが,なかなか理解してもらえない。

値を変化させることで,どのような感じに数値が変化していくのかを見てもらい,理解に結び付く子が増えたらいいなぁと思いながら作りました。

それは載せるのはちょい大変なので,そこで遊んだ表の仕組みの話。

いちいち編集モードに戻らずに表の値を編集したい,というニーズから思いついた単純なものです。

コードはこちら。

Sub 準備()
Dim Sld As Slide: Set Sld = ActivePresentation.Slides(1)
Dim Tbl As Table
With Sld.Shapes.AddTable(4, 3, 50, 50, 300, 200)
    .Name = "表"
    Set Tbl = .Table
End With

Dim i, j
For i = 1 To 4
    For j = 1 To 3
        With Sld.Shapes.AddLabel(msoTextOrientationHorizontal, 100 * j - 50, 50 * i, 100, 50)
            .Name = i & "," & j
            .Line.Visible = msoFalse
            .Fill.Visible = msoFalse
            With .ActionSettings(ppMouseClick)
                .Action = ppActionRunMacro
                .Run = "編集"
            End With
        End With
    Next
Next

End Sub

Sub 編集(Shp As Shape)
    Dim Sld As Slide: Set Sld = ActivePresentation.Slides(1)
    Dim Tbl As Table: Set Tbl = Sld.Shapes("表").Table
    Dim ret As Variant
    ret = InputBox("値を入力")
    Tbl.Cell(Left(Shp.Name, 1), Right(Shp.Name, 1)).Shape.TextFrame.TextRange.Text = ret
End Sub

新規のプレゼンテーションに標準モジュールを追加してそこにペタッと貼れば準備は終わりです。

まず「準備」マクロを実行すると,表を作ります。

見た目には表しかないように見えるはずですが,その表面に透明のラベルを並べています。
f:id:chemiphys:20181023221306p:plain
名前を右側に表示していますが,マクロを読んでもらえばわかりますが, 行,列 で名前をラベルにつけています。

そのラベルにはマウスクリックで 「編集」 マクロが動くよう設定していて,インプットボックスにより,値を取得し,表の該当部分にその値を書き込む,というマクロです。

とっても単純。

スライドショーにして,マウスで表の一部をクリックしてみてください。インプットボックスが出てきます。これで値を入れれる。
f:id:chemiphys:20181023221702p:plain
簡素極まりないですが,スライドショーのまま,値を入力できる,というのは実現できているので,

電子黒板で話を完結させることがある私には,今後も使い勝手があるなぁと思っています。