【対処法】ReDimを使うと配列の中身が消えてしまう。

スポンサーリンク
プログラミング

VBAにおいて動的配列を使う際にReDimを行いますが,普通にやってしまうと
それまで入っていたデータが消えてしまいます。

そんな時には『ReDim Preserve』を利用しましょう。

現象の再現

Sub test()

 Dim testArray
 ReDim testArray(1, 2)

 testArray(1, 1) = "A"
 testArray(1, 2) = "B"

 MsgBox ("(1,1) = " & testArray(1, 1) & vbLf & _
         "(1,2) = " & testArray(1, 2))
 ReDim testArray(1, 3)

 testArray(1, 3) = "C"

 MsgBox ("(1,1) = " & testArray(1, 1) & vbLf & _
         "(1,2) = " & testArray(1, 2) & vbLf & _
         "(1,3) = " & testArray(1, 3))

End Sub
まずは値を代入
ReDim後に消えている

2度目のReDimをする前に設定した値は消えていますね。
ではここで冒頭に紹介した『ReDim Preserve』を使ってみましょう。

Sub test()

 Dim testArray
 ReDim testArray(1, 2)

 testArray(1, 1) = "A"
 testArray(1, 2) = "B"

 MsgBox ("(1,1) = " & testArray(1, 1) & vbLf & _
        "(1,2) = " & testArray(1, 2))
 ReDim Preserve testArray(1, 3)

 testArray(1, 3) = "C"

 MsgBox ("(1,1) = " & testArray(1, 1) & vbLf & _
         "(1,2) = " & testArray(1, 2) & vbLf & _
         "(1,3) = " & testArray(1, 3))

End Sub
ReDim Preserveにより値が維持されている

先ほど消えていた内容が今回は維持されています!

困っていた方は解決できていれば幸いです。

暇な時間にU-NEXT!

今なら無料1ヶ月無料トライアル600円分の有料コンテンツを使えるチャンス!

見放題作品が31日間無料で視聴可能最新作はレンタル配信!

600円分のポイントプレゼント!DVD・ブルーレイよりも先行配信の最新作、放送中ドラマの視聴や最新コミックの購入に使用可能

 

追加料金なく、80誌以上の雑誌が読み放題

 

プログラミング
スポンサーリンク
uediveをフォローする
SEの休日

コメント

タイトルとURLをコピーしました