トップ > Excelマクロ > 2-5 数列を入力する(オートフィル+)
【今回できるようになること】
・繰り返し数(i)の利用
・Subプロシージャとは何か知る
こんにちはー!!
今回は新しい内容です!
早速やっていきましょう!!
それでは早速質問です!
ExcelのA列に、1、2、3、4,5・・・と順番に数字を入力したいとき、
あなたならどうしますか?
1,2、3くらいまで入力して、あとはオートフィルで一発ですね。
さて、勘の良い方は気づいたかもしれませんね。
今日はこの作業をマクロで実現してみます。
それでは、VBEを開いて標準モジュールを追加し、メモ帳みたいなものの「Option Explicit」以下に、下のコードを書いてみましょう!
前回に比べたら簡単なコードですね。
それでは、今回は実行する前に、一度どうなるのか予想してから実行してみてください。
うまく実行できましたか?
さて、結果としてうまくいった訳ですが、
A列にひたすら「i」という文字が並ぶことを予想した方もいらっしゃるのではないでしょうか。
「Selection.Value = i」
は、
「選択しているセルにiを代入」
という意味です。
にも関わらず、きちんと順番に数字が代入されたのはなぜでしょうか。
この疑問の秘密は、「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として処理されます!
それでは次の課題です。
今の「1~10」を入力するボタンはそのまま残して、
新たにB列に「1の2乗~10の2乗」を入力するための別のボタンを配置したい場合、どうすれば良いでしょうか。
ここで重要になるのが、Subプロシージャの知識です。
Subプロシージャとは、今まで書いてきたコードの、
「Sub Suretu()」~「End Sub」
までのひとまとまりのことを言います。
したがって、今まで書いたSubプロシージャの下に、新たなSubプロシージャを作れば、
課題のように複数のプログラムを管理することができます。
それでは、再びVBEを開いて、以下のようにコードを書き換えてみましょう!
さっき書いた「Suretsu」を「Suretsu1」に変更して、
同じものを「End Sub」以下にコピペして「Suretsu2」に変更しました。
そして、「Suretsu2」の方は最初にセル(1,2)を選択し、
繰り返しの変数を「j」に変更、セルには「jの2乗」を代入するように書き換えています。
最後に、Excel画面に戻って2つ目のボタンを配置し、
「開発」タブから「デザインモード」をオンにして、
配置したボタンを右クリック→「マクロの登録」で、
新たに作った「Suretsu1」と「Suretsu2」を登録しましょう。
こうすることで、それぞれのボタンに任意のSubプロシージャを登録することができます。
このように、Subプロシージャを複数作れば、様々なプログラムを任意のタイミングで制御できるようになります!
今回の内容は以上です!またお会いしましょう!!
【今回のまとめ】
・繰り返しの変数は、繰り返す度に1ずつ増えていく変数として利用できる
・Subプロシージャはプログラムを呼び出すためのひとまとまりのこと(複数作れる)