Excel VBA アニメーション、Rnd 関数を使ってセルの色を変えてキラキラさせる

シェアする

The following two tabs change content below.

松井 元(まつい はじめ)

静岡県三島市の松井会計事務所に勤務する理系税理士。 文理両方のスキルの融合を考えており、このブログは以下を中心に更新している。
●税金・会計に関すること
●IT(Excel、VBAなど)を使った業務効率化
●自分のこと(考え、私生活)。

家族は妻子供2人の4人家族。
喫茶店(特にコメダ珈琲)が好き。カラオケが好き。

さらに詳細なプロフィールはこちら
松井会計事務所へのお仕事ご依頼・お問い合わせはこちら

マクロ(Excel VBA)を使えば、簡単なアニメーションを作ることができます。

アニメーションを作っていると楽しいだけでなく、プログラミングのスキルアップに繋がります。

今日は、VBA で Rnd 関数を使って「Excel シート上のセルの色を変更してキラキラさせる」プログラミングコードを紹介したいと思います。

まず、アニメーションの動画を見て頂きたいと思います。2回同じアニメーションを実行しています。
(画面録画ソフトを使うと 録画しながら VBA を実行することとなり、処理速度が遅くなってしまうのでスマホで撮影しました。)

1回のアニメーションの中で

➀セルを塗りつぶしてキラキラさせる
②途中から塗りつぶしを無くす

という2つの動作を行っています。

レクタングル大 広告

1、セルの色を変えてキラキラさせるプログラミングコード

さて、まずは上記アニメーションの全てのコードを示したいと思います。

VBE で使ったモジュールの数は1つです。
1つのモジュールの中身は、一番上から以下のように4つのパートに別れています。

●API 宣言
●「Kirakira」プロシージャ
●「Kirakira1」プロシージャ
●「Kirakira2」プロシージャ

API 宣言

「Kirakira」プロシージャ

「Kirakira1」プロシージャ

「Kirakira2」プロシージャ

2、プログラミングコードの説明

まず、大きな流れを示したいと思います。

モジュールの一番上の API 宣言 についての説明は割愛させて頂きます。
sleep 関数を使うために必要な宣言だと思っていただければ良いです。

Excel シート上に黄色の四角形をスタートボタンとして設定してあります。

スタートボタンには、マクロ「Kirakira」を埋め込んであります。

したがってスタートボタンを押すことで、「Kirakira」プロシージャが実行することになります。

そして、「Kirakira」プロシージャの中で「Kirakira1」プロシージャと「Kirakira2」プロシージャを順番に呼び出しています。

「Kirakira」プロシージャの説明

プロシージャ「Kirakira」のコードを再度示します↓

最初と最後に記述した以下のコードを入れることによって、セル「F6~U21」(色付けをするセルの範囲)の塗りつぶしを無しにしています。

カラーインデックス番号を xlNone とすることで、塗りつぶしを無しにすることができるのです。

また

Call プロシージャ名

と記述することで、プロシージャを呼び出して実行することができます。

以下の記述によって、「Kirakira1」プロシージャと「Kirakira2」プロシージャを順番に呼び出して実行することになります。

Call Kirakira1
Call Kirakira2

プロシージャ 「Kirakira1」

プロシージャ「Kirakira1」のコードを再度示します↓

冒頭で Dim を使って宣言した変数は x1、y1、x2、y2、Color_Code の5つです。

x1、x2 は行番号、y1、y2 は列番号を示し、Color_Code はカラーインデックス番号を示します。

For 文を使って iが1~600になるまで、繰り返し処理(セルを色付けしてキラキラさせる)をするので600回同じ処理を繰り返すことになります。

さて、色付けをするセル1とセル2(色付けは2つのセル同時に行う)の行番号、列番号の指定の仕方として、以下のように Rnd 関数を用いた式を使っています。

●セル1
 行番号 x1 = 15 * Rnd + 6
 列番号 y1 = 15 * Rnd + 6

●セル2
 行番号 x2 = 15 * Rnd + 6
 列番号 y2 = 15 * Rnd + 6

Rnd 関数

Rnd 関数とは、単精度浮動小数点型の乱数(疑似乱数)を返す関数のことです。

返す値の範囲は0以上1未満です。

この Rnd 関数を使ってキラキラ光らせるセルの範囲をランダムに指定しているということです。

x1 = 15 * Rnd + 6
y1 = 15 * Rnd + 6

Rnd 関数を使って指定した x1、y1 をさらに Round関数を用いて0未満を四捨五入して整数にすることによって、セルを指定しているのです。

x1 = Round(x1, 0)
y1 = Round(y1, 0)

セル1の行番号「x1 = 15 * Rnd + 6」は、

Rnd が0を返すときには、x1=6 となり
Rnd が0.9999…を返すときは、四捨五入することで x1=21 となります。

同様に、セル1の列番号「y1 = 15 * Rnd + 6」は、

Rnd が0を返すときには、y1=6 となり
Rnd が0.9999…を返すときは、四捨五入することで y1=21 となります。

セル1の行番号x1と列番号y1をランダムで指定することによって、色付けするセルを決めているのです。
同様に、セル2の行番号x2と列番号y2も、ランダムに指定して色付けしています。

また「Color_Code = 56 * Rnd」として計算した Color_Code を四捨五入することで、0~56までに割り当てられたカラーインデックス番号をランダムで指定しています。

Sleep 関数

Sleep 関数はプログラミイングコードの実行を休ませる関数です。

Sleep 時間

のように記述し、時間はミリ秒単位で指定します。
1000とすれば 1000ミリ秒ということになります。

今回

Sleep 1

としてあるので、本当にわずかな時間だけ休ませているのですが、この数値を大きくすると休む時間が長くなり今回のマクロを実行した際には色の変化がゆっくりになります。

*なお、指定した時間で目で見て分かるレベルでどれだけの時間休むかは PC のスペックによっても異なるようです。

Sleep 500

とした場合において私の PC でマクロを実行させた動画を載せておきます。

セルの色が2つずつゆっくり変化することが確認できます。

プロシージャ 「Kirakira2」

プロシージャ「Kirakira2」のコードを再度示します↓

「Kirakira2」プロシージャは「Kirakira1」プロシージャで色付けしたセルの塗りつぶしを無くしていくコードです。

「Kirakira1」プロシージャと同様に For 文を用いて、セル1とセル2の2つのセル同時に塗りつぶしを無くす動作を iが1~600まで600回繰り返します。

以下のように、カラーインデックス番号を xlNone にすることによってセル1、セル2の色の塗りつぶしを無くすことができます。

Cells(x1, y1).Interior.ColorIndex = xlNone
Cells(x2, y2).Interior.ColorIndex = xlNone

3、まとめ

Rnd 関数を使ってセルの色を変えてキラキラさせる Excel VBA アニメーションの作り方を紹介しました。

Rnd 関数はアニメーションを作る上ではとても役に立つ関数です。

使い方も簡単なので、ぜひマスターして頂きたいです。

お仕事のご依頼は、以下のリンク先にある個別のフォームよりお願い致します。
*リンク先は私が勤務する松井会計事務所の HP です。

◆税務・会計 顧問
◆税務・会計のスポットコンサルティング
◆経理業務効率化コンサルティング
◆Excel シートのオーダーメイド
◆Excel、マクロ(Excel VBA) の講義、マンツーマンレッスン
◆その他のスポットコンサルティング(当ブログを読み何かご相談したい事項が出てきた方に向けたサービス)

セミナー開催要望がありましたら、以下のリンク先にある個別のフォームよりお願い致します。
◆セミナー開催要望
税理士試験まとめ、税法論文の書き方

————————————————
税理士試験についてのまとめはこちらです!

税法2科目免除大学院についてのまとめはこちらです!

kindle電子書籍を出版しました。

税理士試験の税法2科目免除のために大学院で税法論文(修士論文)を書いた経験を元に、大学院生としての目線から税法論文の書き方を体系化した書籍です↓

大学院での税法論文の書き方

本書籍の内容についてはこちらの記事をご確認下さい。

お問い合わせ・フォローボタン

———————————

よろしければフォロー下さい↓

Twitter フォローボタン:

Feedly フォローボタン:
follow us in feedly

Facebookページ:
*いいね!を押して頂くと更新情報が届きます。

関連コンテンツ



レクタングル大 広告
レクタングル大 広告

シェアする

フォローする