宣言 ReDim_Preserve記述間違えが多いFor〜Next文

VB&VBA
FROG ふろっぐ
 
  • オプション

    本文印刷

    お気に入りに追加

  • 検索

    Googlewwwjp-ia
     

    Googlewwwjp-ia
     
  • 情報

  • 関連

[VB&VBA][宣言 ReDim_Preserve記述間違えが多いFor〜Next文]
Option Explicit


Private Sub ReDimPreserve()
'***************************************************************
'ReDim_Preserveの使い方(For〜Next)
'***************************************************************

Dim Testi As Integer
Dim TestPreserve() As String
Dim i As Integer

i = 0 '初期化

For Testi = 1 To 10
    ReDim Preserve TestPreserve(i)
    TestPreserve(i) = Testi * 10
    i = i + 1 '<<********
Next Testi

'※For Each 〜 In 〜 Next 〜も同じです。

'値をテストする
Dim str As String
For Testi = LBound(TestPreserve) To UBound(TestPreserve)
    str = str & Testi & vbTab & TestPreserve(Testi) & vbCr
Next Testi

MsgBox str

str = ""
Erase TestPreserve '一旦配列開放

'間違えた使い方------------------------------------
'<配列数と要素がずれてしまう例 1 >
i = 0 '初期化

For Testi = 1 To 5
    i = i + 1 '<<********
    ReDim Preserve TestPreserve(i)
    TestPreserve(i) = Testi * 10
Next Testi

For Testi = LBound(TestPreserve) To UBound(TestPreserve)
    str = str & Testi & vbTab & TestPreserve(Testi) & vbCr
Next Testi

MsgBox str
'-------------------------------------------------------------
str = ""
Erase TestPreserve '一旦配列開放

'間違えた使い方------------------------------------
'<配列数と要素がずれてしまう例 2 >

i = 0 '初期化
    ReDim Preserve TestPreserve(i) '<<********

For Testi = 1 To 5
    TestPreserve(i) = Testi * 10
    i = i + 1 '<<********
    ReDim Preserve TestPreserve(i)
Next Testi

For Testi = LBound(TestPreserve) To UBound(TestPreserve)
    str = str & Testi & vbTab & TestPreserve(Testi) & vbCr
Next Testi

MsgBox str
'-------------------------------------------------------------
End Sub





Production Japan Import Application. Since 1998