この記事では、EXCELでランダムに色を塗って、それっぽいデザインを作成する方法について説明しています。
EXCELのランダム関数を利用するので、デザインセンスは必要ありません。
おまけに、ランダムなので同じデザインを2度と作ることができないかもしれません。
それでは、EXCELでランダムにデザインを描く機能を作成していきましょう。
困っている女性
解決する男性
困っている女性
それでは、ランダムにデザインを描く機能に必要なものを、1つ1つ順番に説明していきます。
もくじ
1.キャンバスを準備する
まず、デザインを描くキャンバスを用意します。
「色で遊ぶ」シートを追加する
それでは、「色で遊ぶ」という名前のシートを追加します。
デザインを描くキャンバスを作る
「色で遊び」シートのA列からT列の幅を25ピクセルにして、方眼紙のようにします。
ここでいう、方眼紙とは縦と横の幅を同じにして、各セルを正方形にします。
2.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 |
Sub ランダムにセルに色を描く() Dim canvas As Range Dim r As Range Dim red As Integer Dim green As Integer Dim blue As Integer '①描く範囲(キャンバス)を変数に格納する Set canvas = ThisWorkbook.Sheets("色で遊ぶ").Range("A1:T20") '②キャンバスの1セルずつ処理を行う For Each r In canvas '③赤、緑、青を0~255の範囲でランダムに指定する red = Int(Rnd() * 256) green = Int(Rnd() * 256) blue = Int(Rnd() * 256) '④セルに色をつける r.Interior.Color = RGB(red, green, blue) Next End Sub |
ランダムに行と列に同じ色を描く機能を作成する
この機能では、行と列に描く色をランダムに指定します。
標準モジュールに、以下のソースを書きます。
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 |
Sub ランダムに行と列に同じ色を描く() Dim canvas As Range Dim r As Range Dim red As Integer Dim green As Integer Dim blue As Integer Dim i As Integer '①描く範囲(キャンバス)を変数に格納する Set canvas = ThisWorkbook.Sheets("色で遊ぶ").Range("A1:T20") '②キャンバス内の行と列毎に処理を行う For i = 1 To 20 '③赤、緑、青を0~255の範囲でランダムに指定する red = Int(Rnd() * 256) green = Int(Rnd() * 256) blue = Int(Rnd() * 256) '④行に色をつける canvas.Rows(i).Interior.Color = RGB(red, green, blue) '⑤列に色をつける canvas.Columns(i).Interior.Color = RGB(red, green, blue) Next End Sub |
ランダムに行と列に違う色を描く機能を作成する
この機能では、行と列それぞれ異なる色をランダムに指定します。
標準モジュールに、以下のソースを書きます。
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 42 |
Sub ランダムに行と列に違う色を描く() Dim canvas As Range Dim r As Range Dim red1 As Integer Dim green1 As Integer Dim blue1 As Integer Dim red2 As Integer Dim green2 As Integer Dim blue2 As Integer Dim x As Integer Dim y As Integer Dim i As Integer '①描く範囲(キャンバス)を変数に格納する Set canvas = ThisWorkbook.Sheets("色で遊ぶ").Range("A1:T20") '②キャンバス内の行と列毎に処理を行う For i = 1 To 20 '③行と列を1~20の範囲でランダムに指定する x = Int(Rnd() * 20) + 1 y = Int(Rnd() * 20) + 1 '④行に指定する赤、緑、青を0~255の範囲でランダムに指定する red1 = Int(Rnd() * 256) green1 = Int(Rnd() * 256) blue1 = Int(Rnd() * 256) '⑤列に指定する赤、緑、青を0~255の範囲でランダムに指定する red2 = Int(Rnd() * 256) green2 = Int(Rnd() * 256) blue2 = Int(Rnd() * 256) '⑥行に色をつける canvas.Rows(x).Interior.Color = RGB(red1, green1, blue1) '⑦列に色をつける canvas.Columns(y).Interior.Color = RGB(red2, green2, blue2) Next End Sub |
3.ランダムにデザインを描く機能の使い方
それでは、先程作成した3つの機能を順番に動かしてみましょう。
「開発」タブの「マクロ」をクリックします。
マクロボタンを押す
ランダムにセルに色を描く機能を動かす
それでは、「ランダムにセルに色を描く」を選択し、「実行」ボタンをクリックします。
以下のように、各セル毎に異なる色が描かれます。
ちなみに、ランダムに色を決定していますので、実行するたびに異なるデザインになります。
ランダムに行と列に同じ色を描く機能を動かす
それでは、「ランダムに行と列に同じ色を描く」を選択し、「実行」ボタンをクリックします。
以下のように、行と列に同じ色が描かれます。
ランダムに行と列に違う色を描く機能を動かす
それでは、「ランダムに行と列に異なる色を描く」を選択し、「実行」ボタンをクリックします。
以下のように、行と列に異なる色が描かれます。
行と列の順番もランダムなため、奥行きがあるように見えます。
どうですか、気に入ったデザインを作成できましたか!?
4.ランダムにセルに色を描くVBAプログラムの説明
それでは、「ランダムにセルに色を描く」VBAプログラムを説明します。
①描く範囲(キャンバス)を変数に格納する
1 2 |
'①描く範囲(キャンバス)を変数に格納する Set canvas = ThisWorkbook.Sheets("色で遊ぶ").Range("A1:T20") |
そうすることにより、入力するプログラムを短くすることができるからです。
キャンバスの範囲は、セルA1からT20にしています。
②キャンバスの1セルずつ処理を行う
1 2 |
'②キャンバスの1セルずつ処理を行う For Each r In canvas |
ですから、キャンバス内のセルを順番に、変数「r」に格納します。
③赤、緑、青を0~255の範囲でランダムに指定する
1 2 3 4 |
'③赤、緑、青を0~255の範囲でランダムに指定する red = Int(Rnd() * 256) green = Int(Rnd() * 256) blue = Int(Rnd() * 256) |
しかし、指定する数字は、0~255の範囲にする必要があるので、上記のような記述にしています。
④セルに色をつける
1 2 |
'④セルに色をつける r.Interior.Color = RGB(red, green, blue) |
そして、各セルの背景色に色を描いています。
5.ランダムに行と列に同じ色を描くVBAプログラムの説明
それでは、「ランダムに行と列に同じ色を描く」VBAプログラムを説明します。
①描く範囲(キャンバス)を変数に格納する
1 2 |
'①描く範囲(キャンバス)を変数に格納する Set canvas = ThisWorkbook.Sheets("色で遊ぶ").Range("A1:T20") |
そうすることにより、入力するプログラムを短くすることができるからです。
キャンバスの範囲は、セルA1からT20にしています。
②キャンバス内の行と列毎に処理を行う
1 2 |
'②キャンバス内の行と列毎に処理を行う For i = 1 To 20 |
1行目~20行目、1列目~20列目を対象に順番に処理を行います。
③赤、緑、青を0~255の範囲でランダムに指定する
1 2 3 4 |
'③赤、緑、青を0~255の範囲でランダムに指定する red = Int(Rnd() * 256) green = Int(Rnd() * 256) blue = Int(Rnd() * 256) |
しかし、指定する数字は、0~255の範囲にする必要があるので、上記のような記述にしています。
④行に色をつける
1 2 |
'④行に色をつける canvas.Rows(i).Interior.Color = RGB(red, green, blue) |
そして、各行の背景色に色を描いています。
⑤列に色をつける
1 2 |
'⑤列に色をつける canvas.Columns(i).Interior.Color = RGB(red, green, blue) |
そして、各列の背景色に色を描いています。
6.ランダムに行と列に違う色を描くVBAプログラムの説明
それでは、「ランダムに行と列に違う色を描く」VBAプログラムを説明します。
①描く範囲(キャンバス)を変数に格納する
1 2 |
'①描く範囲(キャンバス)を変数に格納する Set canvas = ThisWorkbook.Sheets("色で遊ぶ").Range("A1:T20") |
そうすることにより、入力するプログラムを短くすることができるからです。
キャンバスの範囲は、セルA1からT20にしています。
②キャンバス内の行と列毎に処理を行う
1 2 |
'②キャンバス内の行と列毎に処理を行う For i = 1 To 20 |
対象とする行と列は、ランダムに指定します。
③行と列を1~20の範囲でランダムに指定する
1 2 3 |
'③行と列を1~20の範囲でランダムに指定する x = Int(Rnd() * 20) + 1 y = Int(Rnd() * 20) + 1 |
ランダムに選ぶ範囲は、1~20にしています。
④行に指定する赤、緑、青を0~255の範囲でランダムに指定する
1 2 3 4 |
'④行に指定する赤、緑、青を0~255の範囲でランダムに指定する red1 = Int(Rnd() * 256) green1 = Int(Rnd() * 256) blue1 = Int(Rnd() * 256) |
しかし、指定する数字は、0~255の範囲にする必要があるので、上記のような記述にしています。
ここで用意したランダムな数字は、行の色に利用します。
⑤列に指定する赤、緑、青を0~255の範囲でランダムに指定する
1 2 3 4 |
'⑤列に指定する赤、緑、青を0~255の範囲でランダムに指定する red2 = Int(Rnd() * 256) green2 = Int(Rnd() * 256) blue2 = Int(Rnd() * 256) |
しかし、指定する数字は、0~255の範囲にする必要があるので、上記のような記述にしています。
ここで用意したランダムな数字は、列の色に利用します。
⑥行に色をつける
1 2 |
'⑥行に色をつける canvas.Rows(x).Interior.Color = RGB(red1, green1, blue1) |
そして、各行の背景色に色を描いています。
⑦列に色をつける
1 2 |
'⑦列に色をつける canvas.Columns(y).Interior.Color = RGB(red2, green2, blue2) |
そして、各列の背景色に色を描いています。
以上です。
最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。