dポイントプレゼントキャンペーン実施中!

Variant型配列で
Dim myZaiko
Worksheet("bbb").Activate
myZaiko=worksheet("bbb").range("A1:E100")
とした時に
別のWorksheet("aaa")にA列とC~E列をそれぞれmyZaikoから取り出して貼り付けるということは可能なのでしょうか?
ニュアンスとしては下のような感じなのですが指定の仕方がわかりません。

Worksheet("aaa").Activate
Worksheet("aaa").range("A1:A100").value=myZaiko(A列だけ)
Worksheet("aaa").range("C1:E100").value=myZaiko(C~E列)

よろしくお願いします。

A 回答 (3件)

1個ずつ取り出すような気がします。



Dim myZaiko
Dim i As Long
Dim j As Long
  
myZaiko = Worksheets("bbb").Range("A1:E100").Value
  
For i = 1 To 5
  For j = 1 To 10
    MsgBox myZaiko(j, i)
  Next j
Next i


一例ですが、
Dim myZaiko

Dim myZaiko As Range

myZaiko=worksheet("bbb").range("A1:E100")

Set myZaiko=worksheets("bbb").range("A1:E100")
として

Worksheet("aaa").range("A1:A100").Value=myZaiko

Worksheets("aaa").range("A1:A100").Value=myZaiko.Columns(1).Value
と、いうようなやり方はだめでしょうか。
    • good
    • 0
この回答へのお礼

後半部、これもNo.3の方と同じような感じですよね。
こっちの方が考えていたのにあってましたね。
お二方、感謝します。

動的配列の取りだし方、という点でこちらの方が優れてましたね。
ありがとうございました。

お礼日時:2008/10/25 22:24

A1:E100の範囲のデータを


I列にA列・K~M列にC~E列のデータを入れるとするなら

Sub try()

Dim r As Range

Set r = Range("A1:E100")

Range("I1:I100").Value = Intersect(r, Range("A:A")).Value

Range("k1:M100").Value = Intersect(r, Range("C:E")).Value

End Sub
では意味無し?
    • good
    • 0
この回答へのお礼

ありがとうございます。
たぶんこれがもっとも簡単なのでしょうね。

Intersectを初めて見ました。
まだ知識が足りてないと実感しました。

さらに精進します。

お礼日時:2008/10/25 22:19

Sub test()



Dim myZaiko1, col1, myZaiko2, col2

Set myZaiko1 = Worksheets("bbb").Range("A1:F100")
Set myZaiko2 = Worksheets("aaa").Range("A1:F100")

'myZaiko2.Value = myZaiko1.Value   そのままコピーするのならこれだけで済むが、列ごとにしたいというのであれば、以下。

Set col1 = myZaiko1.Columns
Set col2 = myZaiko2.Columns

For i = 1 To 6
col2(i).Value = col1(i).Value
Next

End Sub

この回答への補足

きちんと書いてないのが悪いんですが、実行速度向上を狙ってましたので残念ながら意にそぐわなかったです。
ごめんなさい。

補足日時:2008/10/25 22:25
    • good
    • 0

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