忘れられない激○○料理

VBAで配列のデータを部分的に削除してその削除した後のデータを前に詰めたいのです

配列のデータ
001 X
002 Y ←この行を削除した配列にしたい
003 Z

削除後の配列データ
001 X
003 Z

こんなイメージなのですが、配列の削除して前につめるという処理はどのように
すればいいでしょうか?
1行で実現できるような配列処理用のメソッドがあるのでしょうか?
2次元配列を行削除して前につめる処理なのですがアドバイス下さい

A 回答 (1件)

通常の配列ですとループを廻してつめていくしかないと思います。



余談ですが、collectionオブジェクトを使うとお望みのようなことができるかもしれません。
サンプルのマクロです。

Sub test()
Dim a As Collection
Dim b As Collection

Set a = New Collection
Set b = New Collection
a.Add "a"
a.Add "b"
a.Add "c"
b.Add a, "1"

Set a = Nothing
Set a = New Collection
a.Add "A"
a.Add "B"
a.Add "C"
b.Add a, "2"

Set a = Nothing
Set a = New Collection
a.Add "あ"
a.Add "い"
a.Add "う"
b.Add a, "3"

MsgBox "最初の状態は・・・"

For i = 1 To b.Count
For j = 1 To b.Item(i).Count
MsgBox "b(" & i & ")(" & j & ")= " & b.Item(i)(j)
Next
Next

b.Item(1).Remove (2) '1行目の2番目の要素を削除

MsgBox "1行目の2番目の要素を削除したら・・・"

For i = 1 To b.Count
For j = 1 To b.Item(i).Count
MsgBox "b(" & i & ")(" & j & ")= " & b.Item(i)(j)
Next
Next

b.Remove (2) '2行目全体を削除

MsgBox "2行目全体を削除したら・・・"

For i = 1 To b.Count
For j = 1 To b.Item(i).Count
MsgBox "a(" & i & ")(" & j & ")= " & b.Item(i)(j)
Next
Next

End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます
collectionオブジェクトを使う方法だと以下の時に困る事がわかりました
たとえば
DIM V
V = range("A2:B100")

・・・・

range("A2:B100") = V

のように2次元配列ならEXCELシートの値を配列に
配列の値をEXCELシートに戻すのも簡単ですが

collectionオブジェクトだとこの方法が使えなくて・・・

お礼日時:2013/08/01 23:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報