Home » いちばんやさしいExcel VBAの教本 » 2重ループを難しいと感じたら変数名の「i」「j」をやめよう

2重ループを難しいと感じたら変数名の「i」「j」をやめよう

対象:Excel2010, Excel2013, Windows版Excel2016

2重ループを難しいと感じたら変数名の「i」「j」をやめよう

いちばんやさしいExcel VBAの教本』で削った、2重構造のFor~Next文についてご紹介しました。

プログラミングに慣れている方の場合、こういった2重のFor~Next文では、変数名を「i」と「j」にすることが少なくありません。

が、拙著ではじめてプログラミングを学習する方の場合、2重ループの変数名にi・jを使うことは、おすすめしません。

2重ループの変数名をi・jにした場合......

ご紹介済みの2重ループの変数名をi・jにすると以下のようになります。

Sub ループの中にループ()
 Dim i As Long
 Dim j As Long

 For i = 1 To 5
  For j = 1 To 2
   Cells(i, j).Select
   MsgBox i & "行目" & j & "列目"
  Next j
 Next i
End Sub

Cellsプロパティに指定された2つの引数の、1つ目が行番号を2つ目が列番号を指定していることを理解したばかりの方にとって、上記のプロシージャは理解しやすくないはずです。

このプロシージャの場合、変数のi・jのどちらが行番号でどちらが列番号なのかは、2重ループの中の
   Cells(i, j).Select
を読解するまでは、わかりません。

これを避けるためには、i・jの宣言部分か、最初に登場した時点でコメントを入れておくしかありません。

これに対して行番号を表すカウンター変数を「Row」の「r」、列番号を表すカウンター変数を「Column」の「c」としておけば、
  For r = 1 To 5
   For c = 1 To 2
を読んだ段階で、行に対するループの中で列に対するループが行われることはわかります。

r・cがわかり辛いのであれば、
  For 行 = 1 To 5
   For 列 = 1 To 2
とすれば日本語を母語にしている人ならば明確です。

変数名iやjは慣習に過ぎない

変数名にiやjを使うのは、慣習に過ぎません。
小文字のアルファベット「i」「j」は、似た形状をしていることが、混乱に拍車をかけます。

(2重ではない)単純なFor~Next文の場合、拙著のLesson 29「変数の基本を学習しましょう」でも書いたとおり語義から変数名「i」の意味を感じることはできます。しかし「j」は「i」の次のアルファベットである他に意味はありません。

2重ループの場合、2つのカウンター変数には何らかの意味があるはずです。
特にプログラミングに慣れないうちは、意味を持たない「i」「j」を無自覚に使うのは、やめておきましょう。

最終更新日時:2019-06-05 10:25

[スポンサードリンク]

Home » いちばんやさしいExcel VBAの教本 » 2重ループを難しいと感じたら変数名の「i」「j」をやめよう

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

検索


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

.