VBAのぐるぐる系(ループ) ~その1~ For文

プログラムを書いていると、同じ処理をさせるために全てを書くと、ソースコードが長くなり、結果的に分かりにくくなります。そこで同じ処理であればループ構文を使用してすっきりさせることが可能です。


以下Wikipediaから

------------------------------------------------------------------------------------------------------------

ループとは、特定の条件下において特定の処理を繰り返すこと、あるいはそのように作られた制御構造のことを言う。日本語の名詞として「繰り返し」とも。特定の条件が成立している限り、特定の処理を繰り返し何度でも実行する。逆に言えば、条件が成立しなくなったときに、処理を中止する。

------------------------------------------------------------------------------------------------------------


今回はVBAで以前現場で良く使ったループ構文を紹介します。

まず、基本データは以下のような分かりやすいものにしました。


セルに入力されているデータを一つ一つ取得して表示させていきたいとします。

基本的には以下のように書きます。

Cells(1,1).value は Excelのセルの1行目、1列目の値を指しています。

Cells(行、列).valueですね。


実行させます。

プログラムを走らせると上から順に実行していきますので、上記例では行が1づつプラスされMsgBoxで1列目の1行目、2行目、3行目と読んでいきます。

上記は1行分の同じデータ表示処理を6回繰り返し書いているだけです。

今回は6行分のデータしかないので、プログラムもそれほど手間ではないですが、1000行、10000行あったらどうでしょうか?


そこで活用できるのがループ構文です。まずはFor文について説明します。For文の特徴は


指定した回数だけ繰り返して終わる。

変数nを宣言して、nに1~6まで順に値を入れていき、MsgBoxでデータを出力させています。


上記では終了する行が6行目ということでわかっているのでよいですが、不変ではなく常に更新されてデータが増えていく場合は上記のプログラムでは対応できませんね。


Excelでは、最終行を判断してくれるコードがありますので、それを活用しましょう!

Cells(Rows.Count,1).End(xlUp).Row

を使うと勝手に最終行を判断してくれます。

結果

最終行を判断してくれる構文をFor文に組み込んでいくと以下のようになります。

出力結果は全て同じなので、実際コード書いて確認してみてください。


VBAを覚えると、日常の作業がとても効率化され時間も短縮されます。VBA含め、パソコンスキルは能書きを言っていても身につきません。技術書をたくさん買って1冊づつ読んだだけでも身につきません。実際に今抱えている問題に対しての解決手段として試行錯誤しながら実務を通して覚えていくことが一番よいのだと、今までの経験を通して学びました。


最終的にはそのプロセスを楽しめるようになると、後はそのまま達人になってください。(笑)




わくわくITサポート インスタント

習いたい事だけに焦点を当てたレッスンが可能です!   1回だけのレッスンでも承ります!