配列内の指定した要素を、削除したい場合があります。
■削除例
重複したデータを削除したい場合はDictionaryステートメントで削除が可能です。
配列内で指定した文言の要素を抜き出したい場合はFor~Loopで取得します。
配列内の空要素(IsEmptyや””文字)はこちらで取得します。
重複したデータを削除したい場合はDictionaryステートメントで削除が可能です。
配列内で指定した文言の要素を抜き出したい場合はFor~Loopで取得します。
配列内の空要素(IsEmptyや””文字)はこちらで取得します。
今回の記事は特定の〇番目の指定要素から取得しなおすコードを説明します。
一次元配列で〇番目の指定要素を削除するサンプルコード
コレクションの remove メソッドは配列に存在していません。
以下の手順で要素を詰めて上書きするイメージです。
①配列を〇番目以降の要素からループさせ上書きする。
②Redim Preserveで配列を再定義(最終の要素をなくす)する。
'■一次元配列内の〇番目要素を削除する Public Sub Call_Array_Remove(ByRef arr As Variant, ByVal num As Long) Dim i As Long '■削除したい〇番目の要素以降のを前につめて上書きコピーする For i = num To UBound(arr) - 1 arr(i) = arr(i + 1) Next i '■配列を再定義し、最終の要素を詰める ReDim Preserve arr(UBound(arr) - 1) End Sub
実際の使い方は以下のように使用します。
Public Sub test() Dim data() As Variant data = Array("あ", "い", "う", "え", "お") '■3を指定したのでの4番目(0から数えて4つ目の3番目の要素)「え」を削除 Call Call_Array_Remove(data, 3) ' [あ い う え お ]が ' [あ い う お]になる End Sub
関連記事
指定した要素で配列を作成【Array関数】【ExcelVBA】
一次元/二次元配列の要素数の最大値を取得する【Ubound関数】
配列の宣言(静的/動的/1次元/2次元)【ExcelVBA】
コメント