| すぐマク YNxv9c728 | Home | Search | Contents | Gallery | Introduction | Service | Support | What's New! |
| 12行おきにコピーして行列を入れ替えて貼り付けるマクロを繰り返すには? |
|
|
|||
|
反復回数が81回と決まっているようなので、For...Next文(ステートメント) で繰り返し処理する方法が、分かりやすく安全でしょう。 また、「Range("")の数値を12加算する」 には、""の中を変数にすれば可能になります。 下記サンプルをお試しください。
Sub 一定間隔で行方向にコピーして列方向に貼り付ける()
間隔 = 12 'コピーする行数
回数 = 81 '繰り返す回数
開始 = 1 'コピーする塊の最初の行番号
行数 = 11 ' 〃 行数
終了 = 間隔 * (回数 - 1) + 1 ' 〃 最後の行番号
For カウンタ = 開始 To 終了 Step 間隔 '開始行から終了行まで指定間隔で繰り返す
セル範囲 = "E" & カウンタ & ":E" & カウンタ + 行数 'コピーするセル範囲
Range(セル範囲).Select
Selection.Copy
セル番号 = "F" & カウンタ '貼り付けするセル番号
Range(セル番号).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True '行列を入れ替えて全て貼り付け
Next
End Sub
少し補足しておきますから、参考にしてください。8行目 「& カウンタ」 & は文字列連結演算子ですから、& の左辺の値と右辺の値(変数「カウンタ」に入っている値)を連結してくれます。 そして、変数「カウンタ」には次に説明するFor...Next文で、 最初は 1 が入りますから、 "E" & カウンタ で "E1" となります。 9行目 「セル範囲 = "E" & カウンタ & ":E" & カウンタ + 行数」 変数「セル範囲」に代入される値は、"E1:E12" となります。 12行目 「セル番号 = "F" & カウンタ」 変数「セル番号」の値が "F1" になることを分かっていただけますね。 変数「カウンタ」を For...Next文の counter引数として使っています。 一度、VBE画面の[ヘルプ]で For...Next文の説明をお読みになることを お薦めしますが、ここで簡単に解説しておきます。 For カウンタ = 開始 To 終了 Step 間隔 (1) (2) (4) (3) (6) (5) (7) (8) (1) 次行からNext文までの間の一連のステートメントを、(2)以下の条件で繰り返し実行する。 (2) 反復回数を数える counterである変数「カウンタ」の初期値として (3) 変数「開始」に入っている値を (4) 代入し、 (5) カウンタの値が変数「終了」に入っている値を (6) 超えるまで。 (7) ただし、1回繰り返すごとにカウンタに加算する値は (8) 変数「間隔」に入っている値とする。 となりますから、カウンタの値は2回目の繰り返しで13、3回目は25、81回目は961、82回目は973となって変数「終了」に入っている961を超えますから繰り返し処理しないで終わります。 なお、分かりやすさ第一で、コピー貼り付けのコードは、あなたが自動記録された4行のコード (セル範囲を選択する→コピー、セルを選択する→貼り付け) に沿っています。 これを2行に簡略化する書き方もありますが、いずれ暇が出来て探究心が湧きましたらマスターしておくと、以後の成長の糧になるかと思います。 (お断り) この回答はBBSでの2回分のやり取りを編集してあります。 |
|
|||||
| ありがとうございました。処理は完璧です。そして、分かりやすい説明、ありがとうございます。勉強してみます。 |
| http://www.geocities.jp/happy_ngi/ | Home | Contents | Gallery | Introduction | Service | Support | What's New! |