中盤の要素を削除するのって結構メンドクサイですね。
Private Sub ArrayRemove(ByRef TargetArray As String(), ByVal deleteIndex As Integer) '一時保管用配列 Dim newArray As String() ReDim newArray(TargetArray.GetUpperBound(0) - 1) '一時保管用配列にすべてをコピーする Array.Copy(TargetArray, 0, newArray, 0, deleteIndex) '一時保管用配列に削除対象の要素以降の値をコピーする Array.Copy(TargetArray, deleteIndex + 1, newArray, deleteIndex, TargetArray.GetUpperBound(0) - deleteIndex) 'オリジナルの配列の格納領域を再割り当て ReDim TargetArray(newArray.GetUpperBound(0)) '値を代入 TargetArray = newArray End Sub
1 件のコメント:
参考になりました。
ありがとうございました。
一時配列を用意しなくても自身の配列で完結するのでは?と思い試してみたところ、上手く行きました。
↓こんな感じです。(ご参考までに)
Private Sub ArrayRemove(ByRef TargetArray As String(), ByVal deleteIndex As Integer)
'削除する要素+1~の内容 → 削除する要素~にコピー
Array.Copy(TargetArray, deleteIndex + 1, TargetArray, deleteIndex, TargetArray.Length - deleteIndex - 1)
'最終行を削除する
ReDim Preserve TargetArray(TargetArray.Length - 2)
End Sub
コメントを投稿