• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Document.Links.Length )

なぜ「-1」が必要なのか?Forループが0から始まる理由は?

このQ&Aのポイント
  • 質問文章はVBAのコードで、Document.Links.Length - 1 という部分についての疑問です。
  • 「Document.Links.Length - 1」は、実際のリンク数を表しています。
  • Forループは0から始まるため、最後のリンクを含むために-1が必要です。

質問者が選んだベストアンサー

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.2

私も技術論はそんなに詳しくないのですが・・ ご存知とは思いますが、 コンピュータの世界は二進数で考えるのが普通のようです。 つまり、0か1の羅列なのですね。 例えば16回数えようとするとき、 十進数で1から始めて16で終わると考えると、 二進数では「00001~10000」の5桁が必要です。 対して、十進数で0から始めて15で終わろうとすると 二進数では「0000~1111」の4桁で済みます。 コンピュータ的には一桁節約できるわけです。 300のような数字だとあまり変わらないのですが、 終端が(二進数的に)キリの良い数字だと、 0で始めるほうが(桁更新が減る分)早く計算が出来るし、 計算に使う領域も少なく済む、ってことですかね。 なので > そもそもなんでFor i = 0で始まってるのでしょうか? 慣習的に0から始めるのではないかなぁ、と想像します。

HHNVTOYXLU4
質問者

お礼

ありがとうございます。

その他の回答 (1)

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

For~Next を外して、   Debug.Print objIE.Document.Links(0).href  '(カッコ内はゼロ) と置き換えて実行してみるとハッキリしますが、 この場合、リンクの一つ目は「0個目」と認識されるようです。 なので、リンクの個数から-1した数までの繰り返し処理で指定します。 なんで?と聞かれると、回答は一つしか無いかと。           仕様です

HHNVTOYXLU4
質問者

お礼

そもそもリンクが0から始まってるのですね。  ザ!仕様! もう、そう覚えるしかないという事ですか。 でも配列のインデックスとかも0からはじまるからなんとなくつかめました。

関連するQ&A

専門家に質問してみよう