Junchi Lab

トップ > Excelマクロ > 2-5 数列を入力する(オートフィル+)

2-5 数列を入力する(オートフィル+)


【今回できるようになること】

・繰り返し数(i)の利用
・Subプロシージャとは何か知る


こんにちはー!!
今回は新しい内容です!

早速やっていきましょう!!


vba2_5_1


それでは早速質問です!
ExcelのA列に、1、2、3、4,5・・・と順番に数字を入力したいとき、
あなたならどうしますか?


vba2_5_2


1,2、3くらいまで入力して、あとはオートフィルで一発ですね。


vba2_5_3


さて、勘の良い方は気づいたかもしれませんね。
今日はこの作業をマクロで実現してみます。


それでは、VBEを開いて標準モジュールを追加し、メモ帳みたいなものの「Option Explicit」以下に、下のコードを書いてみましょう!

1-4 マクロを動かす 参照

vba2_5_4


前回に比べたら簡単なコードですね。

それでは、今回は実行する前に、一度どうなるのか予想してから実行してみてください。

1-4 マクロを動かす 参照


うまく実行できましたか?


vba2_5_5


さて、結果としてうまくいった訳ですが、
A列にひたすら「i」という文字が並ぶことを予想した方もいらっしゃるのではないでしょうか。

「Selection.Value = i」
は、
「選択しているセルにiを代入」
という意味です。

にも関わらず、きちんと順番に数字が代入されたのはなぜでしょうか。


vba1_4_1


この疑問の秘密は、「Selection.Value = i」が、
「For i = 1 to 10」~「Next i」の中(間)にあることが鍵になります。

実は、「For i = 1 to 10」~「Next i」の中で「i」を用いた場合、
繰り返し1回目では「i=1」、
繰り返し2回目では「i=2」、
・・・
繰り返しn回目では「i=n」として処理が行われます。

繰り返しの変数(i)は、繰り返す度に1ずつ増えていき、繰り返した数をカウントします。
だから、「Selection.Value = i」という1行で、繰り返す毎に順番に数字が入力されたという訳です。

ちなみに、本当にひたすら「i」という文字を入力したい場合は、
「Selection.Value = "i"」
というように""で括れば、単なる文字iとして処理されます!


vba2_1_7


それでは次の課題です。

今の「1~10」を入力するボタンはそのまま残して、
新たにB列に「1の2乗~10の2乗」を入力するための別のボタンを配置したい場合、どうすれば良いでしょうか。


vba2_5_6


ここで重要になるのが、Subプロシージャの知識です。

Subプロシージャとは、今まで書いてきたコードの、
「Sub Suretu()」~「End Sub」
までのひとまとまりのことを言います。

したがって、今まで書いたSubプロシージャの下に、新たなSubプロシージャを作れば、
課題のように複数のプログラムを管理することができます。


それでは、再びVBEを開いて、以下のようにコードを書き換えてみましょう!

1-4 マクロを動かす 参照

vba2_5_7


さっき書いた「Suretsu」を「Suretsu1」に変更して、
同じものを「End Sub」以下にコピペして「Suretsu2」に変更しました。

そして、「Suretsu2」の方は最初にセル(1,2)を選択し、
繰り返しの変数を「j」に変更、セルには「jの2乗」を代入するように書き換えています。

最後に、Excel画面に戻って2つ目のボタンを配置し、

1-4 マクロを動かす 参照


「開発」タブから「デザインモード」をオンにして、
配置したボタンを右クリック→「マクロの登録」で、
新たに作った「Suretsu1」と「Suretsu2」を登録しましょう。


vba2_5_8


こうすることで、それぞれのボタンに任意のSubプロシージャを登録することができます。


vba2_5_6


このように、Subプロシージャを複数作れば、様々なプログラムを任意のタイミングで制御できるようになります!
今回の内容は以上です!またお会いしましょう!!


vba2_1_7

【今回のまとめ】

・繰り返しの変数は、繰り返す度に1ずつ増えていく変数として利用できる
・Subプロシージャはプログラムを呼び出すためのひとまとまりのこと(複数作れる)


前回 2-4 自動で最後まで繰り返す(オートフィル)
次回 2-6 当番表の作成(Mod関数他)