実行時にOut of rangeだかで怒られた( ゚-゚)~゚
…じゃぁ、こうだ!Arr(0).Length!!
コンパイルすら通らなかった(笑
素直にググると、.GetLengthなるプロパティがあった。
ちょっと動作確認で作ってみた。
Private Sub GetLength_Sample() Dim Arr(3, 5, 9) As String Dim i, j, k As Integer Debug.Print(Arr.GetLength(0)) '4 Debug.Print(Arr.GetLength(1)) '6 Debug.Print(Arr.GetLength(2)) '10 For i = 0 To Arr.GetLength(0) - 1 For j = 0 To Arr.GetLength(1) - 1 For k = 0 To Arr.GetLength(2) - 1 Debug.Print(i & ":" & j & ":" & k) Next Next Next End Sub
うむ。コレでよし(*゚-゚)
てゆかね、それなら1次元配列でも、.GetLengthを使うべきでしょ( ゚-゚)~゚
あちこちで、.Lengthで終了判定させてるExampleあるけど、
多次元でも対応できる.GetLengthに統一すべきだと声を大にして言いたい!!
…ボクみたいにハマるヤツがいるから( ゚-゚)~゚
ソレよりもまぁ、配列宣言と、要素数、MAXの添字が
ばらんばらんなVBの配列のほーが分かりづらいが。
元々、BASICで、配列のINDEXは1から始まっていたので、すげースッキリしてたのに、
他の言語との対応のためかねぇ…中途半端にINDEXだけを0からにしやがって。
どうせ変えるなら、そっくりそのままCなりと同様にすればよかったのに…。
0 件のコメント:
コメントを投稿