宣言 ReDim_Preserve記述間違えが多いFor~Next文
※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。
※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。
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 |