- ベストアンサー
マクロに変数を代入
題名のとおりなのですが 例えば Range("X").Select Selection.Copy Range("Y").Select ActiveSheet.Paste のXYに変数の行列 X Y a1 a2 b1 b2 c1 c3 等を代入してマクロ繰り返し試行させることは可能なのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
方法はいくつかありますが。。 ●コピー元、先が固定、あまり変らないなら、数が少ない場合は、 そのセルの対応表をマクロの中にいれてやる '------------------------------------ Sub Test333() Dim R As Long Dim x Dim y x = Array("A1", "B1", "C1") y = Array("A2", "B2", "C2") For R = LBound(x) To UBound(x) Range(x(R)).Copy Range(y(R)) Next R End Sub '--------------------------------------- ●コピー元、先のセルがしばしば変わる、コピーの数が多い場合は 使っていないセルにその対応表を作成してそれを利用する 例えば、F列に、Xの値を、G列にYの値を入れておいた場合 '--------------------------------------- Sub Test555() Dim R As Long Dim x Dim y For R = 1 To Cells(Rows.Count, "F").End(xlUp).Row x = Cells(R, "F").Value y = Cells(R, "G").Value Range(x).Copy Range(y) Next R End Sub '--------------------------------------- 今回のような場合は、いちいちSelectをする必要はありません。 以上。
その他の回答 (3)
- merlionXX
- ベストアンサー率48% (1930/4007)
セルの並び方に規則性があるようでないのですね? あればもっと簡単なのですが、しかたないのでアドレスを文字列として配列にしてみます。 Sub test01() Dim a As Variant, b As Variant a = Array("A1", "B1", "C1") b = Array("A2", "B2", "C3") For i = LBound(a) To UBound(a) X = a(i) Y = b(i) ActiveSheet.Range(X).Copy Range(Y) Next i End Sub
- hana-hana3
- ベストアンサー率31% (4940/15541)
>Range("X").Select の記述は誤りです。 変数は""で囲まないので、Range(X).Select のように記述します。 一例ですが・・・。 Sub sample() Dim aryX As Variant Dim aryY As Variant Dim i As Integer aryX = Array("A1", "B1", "C1") aryY = Array("A2", "B2", "C3") Do While i <= UBound(aryX) Range(aryX(i)).Copy Range(aryY(i)) i = i + 1 Loop End Sub
>可能なのでしょうか? 可能です。
補足
すいません、やり方などを教えていただけるとありがたいのですが。
補足
みなさん大変ありがとうございました。 実際はセル数量が多いのでonlyromの方法でがんばろうと 思います。