中盤の要素を削除するのって結構メンドクサイですね。
- 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
コメントを投稿