- ベストアンサー
エクセルのfor nextマクロが思ったとおりに動作しません・・・。
Sub 行列入替貼り付けの繰り返し() Dim cnt1 As Integer Dim cnt2 As Integer For cnt1 = 3 To 17 Step 4 For cnt2 = 1 To 39 Step 8 Sheets("元データ").Select Range("A" & cnt1 & ":C" & cnt1 + 3).Select Selection.Copy MsgBox ("A" & cnt1 & ":C" & cnt1 + 3) Sheets("貼り付け先").Select Range("A" & cnt2 & ":D" & cnt2).Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True MsgBox ("A" & cnt2 & ":D" & cnt2) Next cnt2 Next cnt1 End Sub **************************************************************** 以上が自分で作ったコードなんですが、いかんせんマクロ超初心者なもので処理が思った通りにいきません。 <やりたい処理> 1「元データ」シートのA3:C6をコピー 2「貼り付け先」シートのA1:D1へ、行列入替・値貼り付け 1’「元データ」シートのA7:C10をコピー 2’「貼り付け先」シートのA9:D9へ、行列入替・値貼り付け ・・・以降、「元データ」シートの入力されている範囲のセルまでコピーして行列入替・値貼り付けの繰り返し 以上がやりたい処理なんですが、上記のようにはならず実際には 1「元データ」シートのA3:C6をコピー 2「貼り付け先」シートのA1:D1へ、行列入替・値貼り付け 1’「元データ」シートのA3:C6をコピー 2’「貼り付け先」シートのA9:D9へ、行列入替・値貼り付け の繰り返しになってしまい困っています。 (1と2まではできていますが、1’の所がうまくいっていません) どうか解決方法をご教授お願いいたします。 ※「元データ」シートの入力されている範囲はあらかじめ分かっています。上記のコードでは、 For cnt1 = 3 To 17 Step 4 For cnt2 = 1 To 39 Step 8 と、範囲を小さく取っていますが、これはテスト用なので、 実際のデータ範囲はもっと広いです。 また、メッセージボックスは、カウンタ変数の進捗状況をチェックする為に置いてあるだけで 完成用のコードでは消去する予定です。
- みんなの回答 (3)
- 専門家の回答
お礼
教えていただいた通りにやってみたところ、うまくいきました。 for nextというものを理解できていなかったようです。 Int(Range("A65536").End(xlUp).Row / 4) + 1 というのは見たことが無いですが、これから勉強してみます。 どうもありがとうございました。