• ベストアンサー

マクロに変数を代入

題名のとおりなのですが 例えば Range("X").Select Selection.Copy Range("Y").Select ActiveSheet.Paste のXYに変数の行列 X Y a1 a2 b1 b2 c1 c3 等を代入してマクロ繰り返し試行させることは可能なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.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をする必要はありません。 以上。  

corkscrewr
質問者

補足

みなさん大変ありがとうございました。 実際はセル数量が多いのでonlyromの方法でがんばろうと 思います。

その他の回答 (3)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

セルの並び方に規則性があるようでないのですね? あればもっと簡単なのですが、しかたないのでアドレスを文字列として配列にしてみます。 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)
回答No.2

>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

noname#123709
noname#123709
回答No.1

>可能なのでしょうか? 可能です。

corkscrewr
質問者

補足

すいません、やり方などを教えていただけるとありがたいのですが。

関連するQ&A

専門家に質問してみよう