ExcleVBA 繰り返し処理:For~Nextステートメント

0f2890d83857f2d3e50d317c4ef807c2_s

 icon-check-square-o 孤高の逡巡

今後のブログの方針、
というか、どうやってExcelVBAの解説をしていくか。

夕べ眠れずに絶望と戦いながら、考えましたよ。

ほんとですよ?笑

目先に拘って、流行りのCMや商品の紹介をしても、
自分にとって「財産」にならないもんね。

いや、月に数百万とか稼げるなら、それは財産だけど、
どう頑張っても無理そだもん。

だったら、数年後にも読んでもらえる、
みんなにシェアできるような記事を書きたいな。

と、思ったのはこれで72回目。

For~Nextステートメント

 icon-check-square-o 下準備

おっと、時間がない。
とりあえず、コードだけおいていきます。

・リボンに「開発」タブを表示
・セキュリティーの設定(マクロを有効)

この下準備ができていたら、
「開発」タブ ⇒ Alt+F11

で、VBE(Visual Basic Edtor)エディタを起動してください。

あっ、VBEとかエディタとか、
ステートメントだのオブジェクトだの、プロパティだの、etc…

そういった専門用語は、今は解説しません。
ときがきたら、必要なときに解説します。

まずは、実際にマクロを動かしてみるのが、一番かなと思います。


 icon-check-square-o VBEに記述

VBEを起動したら、
「挿入」 ⇒ 「標準モジュール」

これで、「Module1」という標準モジュールが作成されます。

そしたら、下記のコードを記述してください。


 icon-check-square-o sample01

Sub sample01()

Dim i As Integer

For i = 1 To 56

Range(“B” & i).Value = “STAP細胞”
Range(“B” & i).Font.ColorIndex = i

Next i

End Sub


 icon-check-square-o 実行結果

F5で実行を開始すると、色鮮やかなSTAP細胞が、
56色表示されたと思います。

sample01

では、このプロシージャの解説をしますかね!

コードの解説

 icon-check-square-o サブプロシージャ

Sub プロシージャ名()

プログラム

End Sub

Sub プロシージャ名()~End Subの間に、プログラムを記述する。
これはマクロの「お約束事」として、とりあえず覚えておいてください。

今回は、プロシージャ名を「sample01」としてますが、
プロシージャ名は、日本語でもOKです。

 icon-check-square-o 変数の宣言

Dim i As Integer

ここ、超重要です。
なるべくわかりやすく説明できるように、頑張ります。

このコードは、「これからiという数値の変数を使いますよ」、という意味です。
変数は「箱」って考えてもらえば、わかりやすいかもしれません。

Dim i As Integer
    ↓
これからiという数値を入れる用の箱を使いますよ

こうすることで、変数iに数値(正確には整数)を代入できるようになります。

たとえば、変数iの初期値は0ですが、i=256とすると、変数iの値は256になります。

次にもう少し、具体的な例もあげてみましょう。

i=20
i=i+5

こうすると、変数iの値はどうなるでしょう。

まずはじめに、iに20が代入されます。
これは、大丈夫でしょうか?

次が重要で、プログラムに慣れてない方は、数学と混合してわかりにくいと思います。
i=i+5???

プログラムの場合、=は等しいという意味ではなく、左辺に右辺を代入するという意味で使われます。

i=i+5の場合、iは5加算されます。
つまり、iに20が代入されたあと5加算されるので、iの値は25になります。

これじゃ、わかりづらいかなぁ…
超重要なので、もう一回説明しますね。


 icon-check-square-o 変数の代入

Dim x As Integer, y As Integer

x = 5
y = 70

y = y / x

Dim x As Integer, y As Integer
     ↓
整数型の変数、xとyを使うことを宣言します

x = 5
y = 70
 ↓
xに5、yに70を代入します

y = y / x
 ↓
yにy / x
つまり、yに70÷5を代入します

したがって、yの値は14になります

Rangeオブジェクト

 icon-check-square-o セルに対する操作

単純なようで奥が深い、Rangeオブジェクト。
まあ、僕も難しいことはわからないので、単純に使わせていただきます。

Range(“B4”).Value = “こんばんは”

セルB4に、「こんばんは」と記述します。
単純ですよね。

レンジというくらいだから、範囲も指定できます。

Range(“B4:G8”).Value = “こんばんは”

sample02

今のところは、Rangeオブジェクトについては、こういうもんだと覚えておいてください。

For~Nextステートメントの解説

 icon-check-square-o 繰り返し(ループ)処理

ようやく、本題のFor~Nextステートメントの解説に入れます。
Excel入門のサイトとか作ってる人ってすごいな…

でも僕も頑張って、できるだけわかりやすく解説します。

For i = 8 To 20 Step 4

コード

Next i

変数iに8を代入します。
iは4つずつ増えていきます。

iが20になるまで、For~Nextの処理が繰り返し行われます。
20になったら、ループを抜けます。

どうですかね…
わからないときは、実行してみましょう!


 icon-check-square-o サンプルマクロ03

Sub sample03()

Dim i As Integer

For i = 8 To 20 Step 4

Range(“B” & i).Value = i

Next i

End Sub

本日の集大成です。

Range(“B” & i).Value = i
このコードがわかりにくいと思うので、簡単に説明しますね。

Range(“B” & i).Value = i
     ↓
セルB & iに、iの値を記述します。
たとえばiの値が8だった場合は、セルB8に数値の8が記述されます。

うーん、わかりにくいので、実行してみましょう!


 icon-check-square-o サンプルマクロ03 実行結果

sample03

プログラムの流れとしては、まず整数型の変数iを宣言します。
そして、For~Nextの繰り返し処理に入ります。

はじめにiに8が代入されます。
なので、セルB8に数値の8が記述されます。

次は、iが4加算されます。つまり、iは12になります。
なので、セルB12に数値の12が記述されます。

この処理を、iが20になるまで繰り返します。

以上で、For~Nextステートメントの説明を終わります。
長々とお付き合いいただき、ありがとうございました。