この記事では、エクセルでサイコロマクロをつくる方法をご紹介していきます。
構造として以下の画像のようにあらかじめ準備した各目の画像からランダムに画像を引っ張ってくるというものです。
ですので、あなたの好きなように目の模様を改造することも可能です。
ぜひお子様と一緒に作成し、遊んでみてはいかがでしょうか。
それでは早速やっていきましょう!
下準備:エクセルシートを整える
まずは下準備としてサイコロの目を出す場所、各目の画像を作成する場所を作りましょう。
今回は以下のように目が出る場所を作りました。
次に各目の画像を作成する場所です。
上の目が出る場所と同じサイズの領域を6つ作成しておきます。
※後程紹介するVBAコードでこれらの領域をひとつひとつ指定していきます。ですのでこの作業はどんな領域に、どんな並び方で作成してもOKです。
各目の画像を作成する
次は先ほど作成した6つの領域に、各目が出たときの画像を作成していきましょう。
どんな作り方をしてもOKですが、今回は以下のように円図形を使って作成しました。
以下が完成形です。
サイコロをふるVBAコードを記述する
下準備が整ったところで、VBAコードを記述していきましょう。
VBAは初めて使うという人は、以下の記事を参考にしてください。
エクセルマクロ(VBA)の始め方!初心者向けに画像を使って詳細解説
というわけで以下がサイコロマクロです。
Sub dice_sub()
Dim dice_num As Integer
'2回目以降なら前回のサイコロを削除する
Application.ScreenUpdating = False
For Each obj In ActiveSheet.Shapes
If obj.Name = "dice_pic" Then
ActiveSheet.Shapes.Range(Array("dice_pic")).Delete
End If
Next
'サイコロを表示する場所を選択する
Range("B2:D4").Select
'各目のときに表示する画像がある場所を指定
Set dice1 = Range("B6:D8")
Set dice2 = Range("E6:G8")
Set dice3 = Range("H6:J8")
Set dice4 = Range("K6:M8")
Set dice5 = Range("N6:P8")
Set dice6 = Range("Q6:S8")
'乱数で何を出すか決める
dice_num = WorksheetFunction.RandBetween(1, 6)
If dice_num = 1 Then
dice1.CopyPicture
ElseIf dice_num = 2 Then
dice2.CopyPicture
ElseIf dice_num = 3 Then
dice3.CopyPicture
ElseIf dice_num = 4 Then
dice4.CopyPicture
ElseIf dice_num = 5 Then
dice5.CopyPicture
Else
dice6.CopyPicture
End If
'決まった目を表示させる
ActiveSheet.PasteSpecial
Selection.ShapeRange.Name = "dice_pic"
Application.ScreenUpdating = True
End Sub
基本的には各目の画像を作成した領域をひとつひとつ指定し、乱数で発生させた数値に応じてそれらの領域を画像として出力しているだけです。
一行ずつ読んでいけばきっと理解できるはずです。
マクロ実行ボタンを作成しておく
次は先ほどのマクロを実行するボタンを作成しておきましょう。
ボタンの作成方法は以下の記事を参考にしてください。
【エクセル】マクロ実行ボタンの作成手順!画像つきで詳細解説!
最終的な完成形はこんな感じです。
サンプルコードの実行結果
最後に先ほどのボタンを押してみましょう。
問題なくランダムにいろいろな目が表示されました。
おわりに
というわけでエクセルVBAをつかって簡単なサイコロを作成する方法をご紹介しました。
お子さんとぜひ遊んでみてください。
このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント