• ベストアンサー

エクセルのマクロで変動する範囲にコピペ

いつもお世話になっております。 やりたいことは、 Sheet1において計算結果A1の値を変数nでとって、 (nが1以下になることはありません) A2のデータを W2からWnまで貼り付けたいのです。 そこで以下のマクロを書いてみました。 Range("A2").Select Selection.Copy Dim i As Integer Dim n As Integer n = Val(Worksheets("Sheet1").Range("A1").Value) For i = 2 To n Cells(i, 23).Select Next ActiveSheet.Paste しかし、これでは、(nが10とすると)  W10セルにしか貼り付けられません。 正しい記述方法をご教示ください。 よろしくお願いします。

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

>For i = 2 To n >Cells(i, 23).Select >Next >ActiveSheet.Paste 上記のFOR文の処理内容は、指定されたセルを選択(セレクト)するだけで、コピー処理はされていません。 「ActiveSheet.Paste」で貼付くのは、For文を抜けた後、最後に選択されているn行目のセルだけになります。 For~Next の間に、行いたい処理を記述して下さい。 For i = 2 To n Cells(i, 23).Paste Next

oresama
質問者

お礼

ありがとうございました。 Nextの位置が違っていたのですね。 無事解決できました。

その他の回答 (1)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

順番入れ替えるだけなら Sub マクロ名() Dim i As Integer Dim n As Integer n = Val(Worksheets("Sheet1").Range("A1").Value) For i = 2 To n Range("A2").Select Selection.Copy Cells(i, 23).Select ActiveSheet.Paste Next End Sub 簡略化すると Sub マクロ名() n = Val(Worksheets("Sheet1").Range("A1").Value) Range("W1", Range("W1").Offset(n, 0)) = Range("A2") End Sub

oresama
質問者

お礼

ありがとうございました。 無事解決できました。 簡略化したものもいいですね☆

関連するQ&A