• 締切済み

VBAの変数は何故「i」から始まることが多い?

最近、エクセルVBAを始めたものです。 サイトや解説本でいろいろな記述を見たのですが、私が見た限りでは全ての例で、最初に出てくる変数は「i」で表現されていました。 そして次に出てくる変数は「j」。 (例えば、 For i = 1 to 10 ・・・・ Next i とか) 26あるアルファベットからたまたま「i」が選ばれた?にしては、数多くの解説本やサイトで「i」が使用されているので疑問に思いました。 変数を表すのに、例えば「a」「b」「c」……としても何ら問題にならないと思うのですが…… 「i」にしているのには何か理由があるのでしょうか。

みんなの回答

  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.7

昔のことですが、整数の暗黙的な変数はI~Nでした。 よってI,J,K……Nという順番で使われていると思います。 またIndexとして使われるので頭文字Iが使われていることもあるかも知れません。 個人的にはIと1が見た目で間違うので、違う変数を使った方が良いような気もしますが…。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

ループ・カウンターは、i を使うというのは、コーディング・ルールにありますね。こういう動きそのものを、incremental(増加の形容詞)または、increments と言いますが、その略称から、 i が使われたと思っています。確かに、数値は、データ型の意味ではなくて、integer の整数が使われ、iteration 繰り返しですが。 iの次の j, k が使われます。しかし、l(エル)は、当方では使わないようにしています。1(いち)と見誤りやすいからです。また、小文字を使うのが通例です。 何でも使っても構わないものの、あまり何でもありになると読みにくくなるというか、暗黙のルールのようなもがあるので、それ以外を使うと、そういうことを知らない人だと思われます。また、データ側は、現在では、Long型にするというのが、一般的です。 なお、いわゆる変数のプレフィックス(接頭辞)は、数値型は、Lng, Int などは付けないようにすると聞きます。それは、いずれ.Net の移行を想定していると言いますが、変数のプレフィックスを表立って否定するのは、ハンガリアン記法の提唱者のチャールズ・シモニーが、Microsoft を辞めたせいかもしれません。(笑)

  • bajutsu
  • ベストアンサー率20% (139/693)
回答No.5

For文で使われる添え字は、そもそも indexのことなので それの省略形で i とされています。 二重ループとかになると、j が出てきますが、 これは単にアルファベット順で i の次だから j。 以降、ループが増えるごとにk、l...と続きます。 変数名の先頭にiが付くパターンは、 整数系を表す integer の頭文字です。 変数名だけを見ただけで、変数の型が分かった方が 読みやすいんじゃねーの?的な発想から広まりました。 変数の型が、文字列の場合は、stringを表す s とか、str とかから 始まることが多いです。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.4

>FORTLAN うぉっと、FORTRANですね。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.3

数学などで、添え字にiを使うことが多いから。 最初期のプログラミング言語FORTLANでは、変数名IやJ、Kなどは明示的に型宣言しなくても整数型として扱うという仕様があるくらい、理系な人ならなじみのある表現なのでしょう。 それで、そこらへんの慣習を踏まえて、BASICに限らず、たいていのプログラミング言語でiを使うことが多いのではないかと。 たぶんですが。

  • noyuo
  • ベストアンサー率39% (33/84)
回答No.2

integer(=整数)の頭文字のiを使うのが慣習になってるのでは?。 また、プログラム言語に依っては、変数の型宣言を省略したときに、 iで始まっている変数を整数型として扱うなどというものもありました。 また、ソフトウエアの開発会社の中には、整数型の変数名を、iで始めるという ことをコーディング時の規約として定めているケースもありますので、 そういった関係かもしれません。その著者の方の習慣なんでしょうかね。 でも、実際には変数名をiなどとしたら、長いプログラムではエディタソフトで 検索する時は大変ですよねぇ。

  • 40000Km
  • ベストアンサー率13% (3/23)
回答No.1

昔のFORTRANの名残だと思います FORTRANではi~nで始まる変数は整数型その他は実数型でした。 だからループカウンタなどは整数なのでiから使っていると思います

関連するQ&A

  • エクセルVBA:ある有名な方のサイトで・・・

    VBA初心者です。よろしくお願いします。 いま、VBAを勉強しています。 有名なT氏のエクセルVBAに関するサイト(オフィスT・・)の、「高速化テクニック」のところで、下記、★ ★ ★以下のような例がありました。 「Cells(j, 1).Font.FontStyle = "太字"」 が目的の作業であるならば、 「Dim i As Integer」「For i = 1 To 100」を何のために宣言し、記述しているのでしょうか?「j」の変数の宣言は「Cells(j, 1).・・・」で理解できますが、「i」の宣言また、「For i = 1 To 100」は不要のように思われるのです。 最初は何かの間違いかと思っていましたが、同氏の他の解説にも同様の記述がありましたので、きっと、意味があるのですね。教えてください。 ★ ★ ★ Sub Test2() Dim i As Integer, j As Integer For i = 1 To 100 For j = 1 To 10 Cells(j, 1).Font.FontStyle = "太字" Next j Next i End Sub

  • VBA 変数を使うべき?

    VBA 変数を使うべき? VBAを独学で勉強中のものです。 エクセルVBAでデータが入っている行数分処理を行いたい場合などに ------------------------------------------------ lastRow = cells(rows.count,1).end(xlup).row for i = 1 to lastRow ・・・ next i ------------------------------------------------ などと最終行を変数に代入して使う場合と ------------------------------------------------ for i = 1 to cells(rows.count,1).end(xlup).row ・・・ next i ------------------------------------------------ などと直接for文の中で指定する場合とでは結果は同じと思うのですが 結果以外の部分で見た場合どちらで行うほうがいいのでしょうか?

  • VBAのコントロールを変数に

    TextBox1~10というのをFor n=1 to 10 TextBox(n)="OK WEB" Next としても動きませんよね。TextBox1やComboBox8など数字のところを変数にするにはどのように記述すれば良いのでしょうか

  • VBAの変数について

    VBAでUserFormからデータを入力します。 入力された各データをTarget1~Target20に代入します。 各Targetにデータが入っている場合は、配列K(i)に「1」を格納します。 そこで、Target "1"~"20" を変数iであらわしたいのですが、どのように表現したらよいのでしょうか。 Dim i As Integer Dim K(20) As Integer Target1 = TextBox1.Value Target2 = ComboBox1.Value : : Target19 = TextBox12.Value Target20 = ComboBox8.Value For i = 1 To 20 If 『  ?   』 <> "" Then K(i) = 1 EndIf Next i

  • Excel VBA :URLの中で変数を使用する方法

    Excel VBAで、連続したURLが存在しているかどうかを確認したいと 思っております。 そこで、下記のように変数を作成しURLを確認するようにしたのですが、 Dim i As Long For i = 1 to 1000 Me.WebBrowser1.Navigate "http://*****.co.jp/"+(i)+".html" や Me.WebBrowser1.Navigate "http://*****.co.jp/(i).html" などとしたのですが、どうしてもiを変数として受け取ってくれないの です。どのようにすれば(i)を変数として認識するか、教えていただき たいのですが、よろしくお願いいたします。

  • エクセルVBA:変数の疑問?

    vba初心者です。 ちょっと疑問に思ったので質問します。 変数1 = XXXXX 変数2 = XXXXX 変数3 = XXXXX 変数4 = XXXXX 変数5 = XXXXX For i = 1 To 5 XXXX.YXXXX("変数" & i).xxxxx Next i 以上の様に"変数名 + 数字"の様な型を定義した場合 この、数字部分を生かしてループ処理などは可能なのでしょうか?

  • VBAのfor...next構文で i = A to Z としたい。

    VBAでfor...next構文で通常  for i = 1 to 100 などとしますが、それをA~Zまでとする場合どのようにすればよいでしょうか?

  • VBAにおいて、""内で変数を使用したい

    VBAにおいて、""内で変数を使用したい 0864_001.xls 0864_002.xls … 0864_009.xls というファイルがあるとき、0864_001.xlsを開く→処理→閉じる→0864_002.xlsを開く→… というように処理をしたいと思い、以下のようなマクロを作成しました。 Sub Test() Dim i As Integer For i = 1 To 9 Workbooks.Open ThisWorkbook.Path & "\0864_00i.xls" 処理 閉じる Next i End Sub 実行しようとしてもファイルを開くことが出来ずに困っています。 ""内で変数を使うことは出来ないのでしょうか? また、どのようにすれば実行できるようになるのか教えてください。

  • ChexBox1等の「1」を変数にできますか教えて下さい

    こんにちは VBA初心者で目下勉強中のものです さて、今作っているプログラム中で、ユーザーフォームのチェックボックス にチェックが入っているものをカウントするのに、FOR~NEXTで たとえばCheckBox1~ChexBox20まで回したいのですが、CheckBoxの後についている数字「1」等を変数「i」にすることはできるのでしょうか? どなたかご指導いただけないでしょうか 気持ちとしては、以下のようにしてみたいのですがエラーがでました For i = 1 to 20 CheckBox(i).Value = False Then Exit For .......... Next i とんちんかんな質問かもしれませんが、よろしくおねがいします

  • エクセルVBAでの変数のスコープ

    基本的なことなのですが、教えて下さい。 当方、PHPやjavascriptを中心にプログラムしてきたのですが、 今回、エクセル+VBAでプログラムすることになり、VBAを勉強しているところなのですが、ちょっと戸惑っています。 いままでは、グローバル変数をなるべく使わないように、プログラミングをしてきたのですが、 VBAの勉強で、参考にしている本のコードは、全てグローバル変数を使っています。 そもそも、エクセルのシート・セルがグローバル変数のようなもの(?)なので、変数のスコープにこだわってもあまり意味がないのかな?とも思います。 エクセル+VBAである程度の規模のプログラムを作る際、 変数のスコープはどのように使い分けるのが良いのでしょうか? すみませんが、ご教授の程、よろしくお願いします。