Excelのマクロに挑戦3

 だんだん,マクロのおもしろさがわかってきてしまいました。(^^ゞ そこで,マクロならではの機能をつけてみたくなりました。(こんなことの繰り返しでどんどん肥満していく・・・)

 児童一人一人のグラフを作る機能はできたのですが,一人一人確認しながら印刷するのでは時間の浪費です。そこで,ボタン一つで全員分の印刷ができるマクロを作ろうと思ったわけです。

元のソースは,★Let's Excel VBA★さんのものを参考にしました。

http://www.sanynet.ne.jp/~awa/excelvba/stepup.html

の124番です。

さて,出来上がったソースは・・・。

**************************

Sub オートシェイプ5_Click()
    Dim TgCell As Range
    Dim TgName As Range
   
    Set TgCell = Sheets("様式1").Range("A5")
    Set TgName = Sheets("様式1").Range("B5")
   
    Sheets("グラフ").Select
   
    Do Until TgName.Value = ""
        Sheets("グラフ").Range("B2").Value = TgCell.Value
        Sheets("Sheet3").PrintOut
       
        Set TgCell = TgCell.Offset(1, 0)
        Set TgName = TgName.Offset(1, 0)
       
    Loop

End Sub

**************************

 参照元のシートには,150人分のデータが入るようになっています。この番号だけをたよりにしたのでは,データが入っていないシートを何枚も印刷することになります。そこで,

Do Until ~ Loop

を使いました。上のソースでは,TgCell(参照するセル)と,TgName(参照する名前)を定義し,TgCellは一覧表の番号,TgNameは児童の名前を参照します。

 グラフのシートには,その児童の番号を入力すると,グラフが表示されるので,TgCellだけでよさそうです。でも,そのままだと白紙も印刷されてしまうのです。そこで,児童の名前を参照し,名前の欄が空欄になるまで印刷することにしました。

 あとは,TgCellでゲットした数字をグラフシートの番号欄に入力し,プリントアウトします。終わったら,TgCellとTgNameを一つ下に移動します。この繰り返しで,全ての児童データが印刷されます。

 何となくVBAを使った気になっているHorryでした。

コメント(5)