- ベストアンサー
エクセルのマクロで変動する範囲にコピペ
いつもお世話になっております。 やりたいことは、 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セルにしか貼り付けられません。 正しい記述方法をご教示ください。 よろしくお願いします。
- みんなの回答 (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
その他の回答 (1)
- mshr1962
- ベストアンサー率39% (7417/18945)
順番入れ替えるだけなら 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
お礼
ありがとうございました。 無事解決できました。 簡略化したものもいいですね☆
お礼
ありがとうございました。 Nextの位置が違っていたのですね。 無事解決できました。