2重になったループで変数名に「i」と「j」を使わないことをおすすめしました。
そもそも1重のループでも理解し辛いという場合は、カウンター変数で「i」を使わないのも選択肢のひとつです。
Cellsでiを使うと理解し辛いという方も
拙著『いちばんやさしいExcel VBAの教本』の、Lesson 47「Cellsを使って合否判定を行うマクロを書けることを確認しましょう」で、Cellsプロパティを使った縦方向のFor~Next文をご紹介しています。
Dim i As Long For i = 1 To 5
If Cells(i, 1).Value >= 80 Then
Cells(i, 2).Value = "合格"
Else
Cells(i, 2).Value = "不合格"
End If
Next i
End Sub
変数やFor~Next文を学習したばかりの方にとって、こういったCellsを使ったループ処理の理解が難しい場合もあります。
上記のSubプロシージャに登場する、「Cells(i, 1)」「Cells(i, 2)」の「i」を変数と認識できず、単なる文字列としてのアルファベットの「I」(アイ)だと誤認してしまい、「Cells(i, 1)」をI1セル、「Cells(i, 2)」をI2セルと思ってしまって、上手く理解できないという方も、実際のセミナーでいらっしゃいました。
こういうことはどうしても起こり得ます。
耳慣れない外国の音楽の歌詞を、一度変なフレーズの日本語として認識してしまうと、以後そのようにしか聞こえなくなってしまい、本来の歌詞どおりに聞くのが非常に難しくなるのと似た状態です。
カウンター変数を「i」以外の名前にして理解しよう
For~Next文のカウンター変数に「i」が使われるのも、慣習に過ぎません。
例えばカウントするという意味から変数名を「cnt」にして、
For cnt = 1 To 5
If Cells(cnt, 1).Value >= 80 Then
Cells(cnt, 2).Value = "合格"
Else
Cells(cnt, 2).Value = "不合格"
End If
Next lp
とすると、どうでしょう。
あるいはループ(loop)処理で使う変数という意味から変数名を「lp」にして、
For lp = 1 To 5
If Cells(lp, 1).Value >= 80 Then
Cells(lp, 2).Value = "合格"
Else
Cells(lp, 2).Value = "不合格"
End If
Next lp
とすると、どうでしょう。
カウンター変数「i」のままで理解し辛いという場合、まずこういった形で理解して、それから「i」に慣れるというのもひとつの方略です。
一旦For~Next文の処理をしっかり理解できた場合、変数を「i」にしても混乱することはありません。逆に言えば変数を「i」にして混乱するなら、まだFor~Next文を理解できていないということです。
Home » いちばんやさしいExcel VBAの教本 » カウンター変数は「i」じゃなくてもいい