もりさんのプログラミング手帳

教えることは、二度学ぶこと

スポンサーリンク

【ExcelVBA】画像アニメーションマクロを作ってみた

Excelマクロ(VBA)といえば「オフィスワークの手作業を自動化(効率化)するもの」というイメージが強いですね。

最近は書店で「VBAを使って事務作業の改善をしよう!」といった本もたくさん並んでいますので、習得に励まれている人も多いと思います。

筆者もその一人です。

f:id:excel-accounting:20180424111912p:plain:w150


『作業を効率化できるのはうれしい!』


『残業が減って早く帰れるのもうれしい!』


でも、なんかそれだけじゃもの足りない・・・

f:id:excel-accounting:20180424112139p:plain:w150

そんなこんなで、ちょっとした遊び心から

Excelのセルを活用した画像アニメーションマクロ

を作ってみました。

f:id:excel-accounting:20180505225039p:plain:w400

アニメーション動画

まずはこちらをご覧ください。

twitter.com

事前設定

①Excelシートの行・列を同一幅に設定し、方眼紙のようにする。
(筆者の場合は行列20ポイントに設定しています。)

②ExcelオプションでR1C1形式に設定。
列番号が数値で表示されるので、cells(r, c)の列番号が確認しやすくなります。
f:id:excel-accounting:20180317224828p:plain:w500

画像の準備

f:id:excel-accounting:20180317225003p:plain:w400
画像描画に動きを持たせるため、2パターンの絵を用意します。

「オリジナル画像」という名称のシートに背景黒で作成。
f:id:excel-accounting:20180317224850p:plain:w400

※画像の赤枠線は、Rangeオブジェクトに格納する範囲です

ソースコード

「オリジナル画像」シートとは別にマクロ実行用のシートを用意して下記2点の準備をします。

・方眼紙形式(行列を同じ幅に設定)
・セルを黒色で塗りつぶし

Sub 画像アニメーション()

    Dim sh As Worksheet
    Set sh = Sheets("オリジナル画像")
    
    Dim Pattern1 As Range '画像パターン1
    Set Pattern1 = Range(sh.Cells(2, 2), sh.Cells(11, 15))
    
    Dim Pattern2 As Range '画像パターン2
    Set Pattern2 = Range(sh.Cells(2, 18), sh.Cells(11, 31))
    
    'スタート位置の設定
    Dim r1 As Long, c1 As Long
    r1 = 2: c1 = 2
    
    Do Until c1 = 20
    
        Select Case c1 Mod 2
        
        Case 0 '偶数列の場合、画像パターン1を表示する
            Pattern1.Copy Destination:=Cells(r1, c1)
        
        Case 1 '奇数列の場合、画像パターン2を表示する
            Pattern2.Copy Destination:=Cells(r1, c1)
            
        End Select
    
        c1 = c1 + 1 '表示列を右へ
        Sleep 200 '描画間隔の設定
        
        DoEvents
    
    Loop

End Sub

ポイント

画像範囲をRangeオブジェクトにセットする処理(Set Pattern1 = ~~)で、画像範囲よりも一回り(一行・一列)バッファを持たせて格納するのがポイントです。

下記の水色枠で囲んだように画像サイズピッタリでセットすると、
f:id:excel-accounting:20180318212144p:plain:w400

自らの残像が残ってしまうのです・・・(^^;
f:id:excel-accounting:20180318212205p:plain:w400

一回り余分に持たせることで、上下左右どの方向に移動しても、自らの残像を上書きしながらキレイに描画できるんですよ。

VBAっておもしろいですね!

2018/5/6
第二弾公開しました

www.excel-prog.com

スポンサーリンク