- ベストアンサー
UBound の使い方
Split で文字列を分離したものがt(0),t(1),・・・・と表されますが、 最後の項をt(n)とした場合、 For~文で最後を指定するとき、UBound(t) を使うと思いますが、最後から2番目、つまりt(n-1)までを指定するときはどう表せばよいでしょうか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
要素数-1なら「UBound(t)-1」となります。 例えば、 for i=1 to UBound(t)-1 ・・・ next
その他の回答 (3)
- chie65536(@chie65535)
- ベストアンサー率44% (8742/19842)
訂正。 For i = 0 To UBound(t) - 1 が正解です。 Option Base 0の時に Dim t(10) と配列を定義すると「UBound(t)」は「10」になるので「要素の数を返す」のと勘違いしてしまいました。 実は、Option Base 0の時に Dim t(10) と定義すると「t(0)~t(10)の11個の要素の配列が定義される」のでした。 当方は、これを「t(0)~t(9)の10個の要素の配列が定義される」と勘違いしていたのです。 「配列の宣言時の要素数の指定」って「要素の数」ではなくて「要素の添え字の最大値」を指定するのですね。 ですので「最後の要素の添え字」は「UBound(t)」になりますし「最後から2番目の要素の添え字」は「UBound(t)-1」になります。
- chie65536(@chie65535)
- ベストアンサー率44% (8742/19842)
For i = 0 to UBound(t) - 2 ... Next i になります。 >Split で文字列を分離したものがt(0),t(1),・・・・と表されますが、 「添え字が0から始まる」つまり「Option Base 0が指定されている」と言う事ですね。 VBで「Option Base 0」として、配列の添え字を0からにしている場合、最後の要素を示すのは「t(UBound(t) -1)」です。 「要素がn個の配列」の場合は t(0)…1番目(添え字0)の要素 t(1)…2番目(添え字1)の要素 | t(n-2)…n-1番目(添え字n-2)の要素 t(n-1)...n番目(添え字n-1)の要素 となります。 ここで「n」は「UBound(t)」になります。 >最後から2番目、つまりt(n-1)までを指定するときはどう表せばよいでしょうか。 上記の t(n-2)…n-1番目(添え字n-2)の要素 が「最後から2番目」ですから、添え字は「n-2」、つまり「UBound(t) - 2」です。 なお「配列要素が1つしかない時」は「UBound(t) - 2」が「-1」になるので注意して下さい。
お礼
ありがとうございます。
- eden3616
- ベストアンサー率65% (267/405)
No1の訂正です。 すいませんsplitで格納した場合の要素の始まりは0なので例文にて正しくは For i = 0 To UBound(t) - 1 ・・・ Next です。
お礼
ありがとうございます。 助かりました。