この記事では、EXCELのセルを正方形にし、ドット絵を描いて遊ぶ方法について説明しています。
好きな絵をドット絵で描き、記録する。
次に違うドット絵を描き、記録する。
そうやって記録したドット絵を1つ1つ再生すると、パラパラ漫画のようにドット絵が動き出します。
ちょっとした息抜きにドット絵を描いて、遊んでみましょう。
一度この機能を作成しておけば、パラパラ漫画を作成できるようになります。
友人や知人などにあなたが作成したパラパラ漫画を見せて、驚かせてみませんか?
それでは、EXCELでドット絵を描く機能を作成していきましょう。
困っている女性
困っている女性
解決する男性
困っている女性
解決する男性
解決する男性
困っている女性
その前にパラパラ漫画がどういうものか知らない方のために、パラパラ漫画のサンプルを掲載しておきます。
上の画像のように、1つ1つの絵が一定間隔で切り替わり、まるで動いているかのように見えます。
このような機能を今回作成していきます。
もちろん、好きなドット絵を描くことができますので、好きなパラパラ漫画を作ることができます。
例えば、棒人間が動き回るものや、打ち上げ花火が咲き乱れるものなども作ることができます。
それでは、EXCELでドット絵を描いたり、パラパラ漫画を作成する機能に必要なものを、1つ1つ順番に説明していきます。
もくじ
1.ドット絵を作成するシートとドット絵データを保存するシートを作成する
まず、必要なシートを2つ用意しましょう。
「メイン」シートを作成する
- 「メイン」という名前のシートを作成します。
- 他は特になにも、しなくて良いです。
「メイン」シートは、ドット絵を描いたり、ドット絵を作成したりするのに利用します。
各セルを正方形に整える作業は、VBAプログラムで作成します。
だから、「メイン」シートという名前のシートがあればそれで良いです。
「データ」シートを作成する
- 「データ」という名前のシートを作成します。
- 他は特になにも、しなくて良いです。
「データ」シートは、「メイン」シートに描いたドット絵のデータを保存するシートになります。
ドット絵のデータを保存する機能をVBAプログラムで作成するので、他には特になにもしなくて良いです。
2.ドット絵を描くベースキャンバスを作成する機能をVBAで作成する
それでは、ドット絵を描くベースキャンバスを作成していきましょう。
もちろん、VBAプログラムにベースキャンバスを作成させますので、VBAプログラムを記入していきます。
それでは、「Microsoft Visual Basic for Applications」を起動します。
標準モジュールを追加して、以下のソースを書きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Public Sub CreateBase() Dim shtMain As Worksheet '①「メイン」シートを変数に格納する Set shtMain = ThisWorkbook.Sheets("メイン") Dim i As Integer Dim j As Integer For i = 1 To 30 '②列幅を2で設定する shtMain.Columns(i).ColumnWidth = 2 '③行幅を18.75で設定する shtMain.Rows(i).RowHeight = 18.75 For j = 1 To 30 '④背景色にグレーを設定する shtMain.Cells(i, j).Interior.Color = 15921906 Next Next MsgBox "END" End Sub |
3.描いたドット絵データを保存する機能をVBAで作成する
次に、「メイン」シートに描いたドット絵データを「データ」シートに保存する機能を作成していきます。
もちろん、VBAプログラムでその機能を作成します。
標準モジュールに、以下のソースを書きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
Public Sub SaveDotData() Dim shtMain As Worksheet Dim shtData As Worksheet '①「メイン」シートを変数に格納する Set shtMain = ThisWorkbook.Sheets("メイン") '②「データ」シートを変数に格納する Set shtData = ThisWorkbook.Sheets("データ") Dim i As Integer Dim j As Integer Dim row As Integer Dim colMax As Integer row = 1 '③「データ」シートに保存されているデータの最大列数+1を取得する If shtData.Cells(1, 1) = "" Then colMax = 1 Else colMax = shtData.Cells(1, shtData.Columns.Count).End(xlToLeft).Column + 1 End If For i = 1 To 30 For j = 1 To 30 '④「データ」シートに「メイン」シートのドットデータを保存する shtData.Cells(row, colMax) = shtMain.Cells(i, j).Interior.Color row = row + 1 Next Next MsgBox "END" End Sub |
4.保存しているドット絵データを再生する機能をVBAで作成する
最後に、「データ」シートに保存されているドット絵データを使って、「メイン」シートにドット絵を作成する機能を作成していきましょう。
もちろん、この機能もVBAプログラムで作成します。
標準モジュールに、以下のソースを書きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
Public Sub PlayDotData() Dim shtMain As Worksheet Dim shtData As Worksheet '①「メイン」シートを変数に格納する Set shtMain = ThisWorkbook.Sheets("メイン") '②「データ」シートを変数に格納する Set shtData = ThisWorkbook.Sheets("データ") Dim i As Integer Dim j As Integer Dim row As Integer Dim col As Integer Dim colMax As Integer row = 1 '③「データ」シートに保存されているデータの最大列数を取得する colMax = shtData.Cells(1, shtData.Columns.Count).End(xlToLeft).Column For col = 1 To colMax row = 1 For i = 1 To 30 For j = 1 To 30 '④「メイン」シートにドット絵を再生する shtMain.Cells(i, j).Interior.Color = shtData.Cells(row, col) row = row + 1 Next Next '⑤1秒後まで再生を止める Application.Wait Now + TimeValue("00:00:01") Next MsgBox "END" End Sub |
以上でドット絵データを保存する機能、保存されているドット絵データを再生する機能が完成しました。
あとは、「メイン」シートに好きなドット絵を描いていきましょう。
5.ドット絵を描き、再生する方法の説明
ドット絵を描く前に、各セルを正方形にする必要があります。
先ほど作成したVBAプログラム「CreateBase」を動かして、ベースキャンバスを準備しましょう。
ドット絵を描くベースキャンバスを準備する
「開発」タブを選択し、「マクロ」を押します。
次に、「CreateBase」を選択し、「実行」ボタンを押します。
しばらくすると、背景色がグレーで30行・30列のベースキャンバスが「メイン」シートに作成されます。
描いたドット絵を消したい場合は、再度VBAプログラム「CreateBase」を実行すれば、クリアされます。
サンプルのドット絵を描く
それでは、準備されたベースキャンバスに簡単なドット絵を描いてみましょう。
以下のような、穴が空いた四角形を描きます。
具体的には、以下のようにします。
- 14行目、14列目のセルの背景色を赤色にする
- 14行目、15列目のセルの背景色を赤色にする
- 14行目、16列目のセルの背景色を赤色にする
- 15行目、14列目のセルの背景色を赤色にする
- 15行目、16列目のセルの背景色を赤色にする
- 16行目、14列目のセルの背景色を赤色にする
- 16行目、15列目のセルの背景色を赤色にする
- 16行目、16列目のセルの背景色を赤色にする
描いたドット絵データを「データ」シートに保存します。
「SaveDotData」を選択し、「実行」ボタンを押します。
しばらくすると、「データ」シートの1列目に数値が書き込まれています。
この数値は、各セルの背景色の色番号です。
30行、30列分のセルの背景色の色番号が、「データ」シートの1列目に保存されます。
つぎに、ドット絵データを保存すると、「データ」シートの2列目に保存されます。
このようにして保存したドット絵データは、ドット絵の再生時に利用します。
次のドット絵を描く前に、ベースキャンバスをクリアしましょう。
「CreateBase」を選択し、「実行」ボタンを押します。
次は、違う場所に穴が空いた四角形を描きます。
具体的には、以下のようにします。
- 4行目、14列目のセルの背景色を赤色にする
- 4行目、15列目のセルの背景色を赤色にする
- 4行目、16列目のセルの背景色を赤色にする
- 5行目、14列目のセルの背景色を赤色にする
- 5行目、16列目のセルの背景色を赤色にする
- 6行目、14列目のセルの背景色を赤色にする
- 6行目、15列目のセルの背景色を赤色にする
- 6行目、16列目のセルの背景色を赤色にする
描いたドット絵データを「データ」シートに保存します。
「SaveDotData」を選択し、「実行」ボタンを押します。
しばらくすると、「データ」シートの2列目に数値が書き込まれています。
次のドット絵を描く前に、再度ベースキャンバスをクリアしましょう。
「CreateBase」を選択し、「実行」ボタンを押します。
次も、違う場所に穴が空いた四角形を描きます。
具体的には、以下のようにします。
- 24行目、14列目のセルの背景色を赤色にする
- 24行目、15列目のセルの背景色を赤色にする
- 24行目、16列目のセルの背景色を赤色にする
- 25行目、14列目のセルの背景色を赤色にする
- 25行目、16列目のセルの背景色を赤色にする
- 26行目、14列目のセルの背景色を赤色にする
- 26行目、15列目のセルの背景色を赤色にする
- 26行目、16列目のセルの背景色を赤色にする
描いたドット絵データを「データ」シートに保存します。
「SaveDotData」を選択し、「実行」ボタンを押します。
しばらくすると、「データ」シートの3列目に数値が書き込まれています。
とりあえず、3つドット絵データを保存できました。
それでは、保存したドット絵を作成してみましょう。
サンプルのドット絵を再生する
「メイン」シートに切り替えておきます。
それでは、ドット絵データを再生する機能を動かしてみます。
「PlayDotData」を選択し、「実行」ボタンを押します。
どうですか、うまくドット絵が再生されましたか?
一通りの動かし方を説明しましたので、あとは好きなドット絵を描いてみてください。
以下に、私が作成したドット絵データを貼っておきます。
試して見たい方は、下のデータをダウンロードしてください。
ダウンロードしたファイルを開き、すべてコピーして、「データ」シートのA1セルに貼り付けしてご利用ください。
6.ドット絵を描くベースキャンバスを作成するVBAプログラムの説明
それでは、ドット絵を描くベースキャンバスを「メイン」シートに作成するVBAプログラムを説明します。
①「メイン」シートを変数に格納する
1 2 |
'①「メイン」シートを変数に格納する Set shtMain = ThisWorkbook.Sheets("メイン") |
そうすることにより、入力するプログラムを短くすることができるからです。
何度も「ThisWorkbook.Sheets(“メイン”)」と入力するより、「shtMain」と入力するほうが少なくてすむからです。
②列幅を2で設定する
1 2 |
'②列幅を2で設定する shtMain.Columns(i).ColumnWidth = 2 |
③行幅を18.75で設定する
1 2 |
'③行幅を18.75で設定する shtMain.Rows(i).RowHeight = 18.75 |
④背景色にグレーを設定する
1 2 |
'④背景色にグレーを設定する shtMain.Cells(i, j).Interior.Color = 15921906 |
7.描いたドット絵データを保存するVBAプログラムの説明
それでは、描いたドット絵データを「データ」シートに保存するVBAプログラムを説明します。
①「メイン」シートを変数に格納する
1 2 |
'①「メイン」シートを変数に格納する Set shtMain = ThisWorkbook.Sheets("メイン") |
そうすることにより、入力するプログラムを短くすることができるからです。
何度も「ThisWorkbook.Sheets(“メイン”)」と入力するより、「shtMain」と入力するほうが少なくてすむからです。
②「データ」シートを変数に格納する
1 2 |
'②「データ」シートを変数に格納する Set shtData = ThisWorkbook.Sheets("データ") |
③「データ」シートに保存されているデータの最大列数+1を取得する
1 2 3 4 5 6 |
'③「データ」シートに保存されているデータの最大列数+1を取得する If shtData.Cells(1, 1) = "" Then colMax = 1 Else colMax = shtData.Cells(1, shtData.Columns.Count).End(xlToLeft).Column + 1 End If |
まだ、ドット絵データが1つも保存されていない場合は、列番号1を取得します。
1つでも保存されている場合は、最大列数+1の列番号を取得します。
④「データ」シートに「メイン」シートのドット絵データを保存する
1 2 |
'④「データ」シートに「メイン」シートのドット絵データを保存する shtData.Cells(row, colMax) = shtMain.Cells(i, j).Interior.Color |
「データ」シートには、1行目から順番に900行目までドット絵データが保存されます。
つまり、「メイン」シートのドット絵データである30行・30列の各セルの背景色の色番号が、「データ」シートの1列の900行に保存されます。
もっと大きなキャンバスを使いたい場合は、この30を50や100に変更すればよいです。
8.保存されたドット絵データを再生するVBAプログラムの説明
それでは、「データ」シートに保存されたドット絵データを再生するVBAプログラムを説明します。
①「メイン」シートを変数に格納する
1 2 |
'①「メイン」シートを変数に格納する Set shtMain = ThisWorkbook.Sheets("メイン") |
そうすることにより、入力するプログラムを短くすることができるからです。
何度も「ThisWorkbook.Sheets(“メイン”)」と入力するより、「shtMain」と入力するほうが少なくてすむからです。
②「データ」シートを変数に格納する
1 2 |
'②「データ」シートを変数に格納する Set shtData = ThisWorkbook.Sheets("データ") |
③「データ」シートに保存されているドット絵データの最大列数を取得する
1 2 |
'③「データ」シートに保存されているデータの最大列数を取得する colMax = shtData.Cells(1, shtData.Columns.Count).End(xlToLeft).Column |
なぜなら、どの列までのデータを再生したらよいか把握するためです。
④「メイン」シートに保存されているドット絵データを再生する
1 2 |
'④「メイン」シートにドット絵を再生する shtMain.Cells(i, j).Interior.Color = shtData.Cells(row, col) |
具体的には、30行・30列のセルに対して、背景色を設定しています。
⑤1秒後まで再生を止める
1 2 |
'⑤1秒後まで再生を止める Application.Wait Now + TimeValue("00:00:01") |
なぜなら、ドット絵の再生が早すぎてパラパラ漫画にならなくなるからです。
以上です。
いろいろなドット絵を描いて、遊んでみましょう。
最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。