Home » いちばんやさしいExcel VBAの教本 » カウンター変数は「i」じゃなくてもいい

カウンター変数は「i」じゃなくてもいい

対象:Excel2010, Excel2013, Windows版Excel2016

2重になったループで変数名に「i」と「j」を使わないことをおすすめしました。

そもそも1重のループでも理解し辛いという場合は、カウンター変数で「i」を使わないのも選択肢のひとつです。

Cellsでiを使うと理解し辛いという方も

拙著『いちばんやさしいExcel VBAの教本』の、Lesson 47「Cellsを使って合否判定を行うマクロを書けることを確認しましょう」で、Cellsプロパティを使った縦方向のFor~Next文をご紹介しています。

Sub 合否判定を行う_Cellsを使って()
 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」じゃなくてもいい

「いちばんやさしいExcel VBAの教本」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.