質問: "5" end with worksheets("入力画面").activate end sub ここまで、試行錯誤した内容です。 どこに最終行の下(空白行)の記述をいれられますでしょうか? 画像が一枚しかのせられなかったので、sheet2(確認画面)だけ添付致しました。 sheet3(データ)では、一行に集約しています。 是非、ご教授お願いします。色々なお意見がききたいです。
回答: 私も、ど素人のマクロで、オマケにどんどん今は劣化中です。 ただ、今は、もう参考にする本もなくなってしまいました。 ご質問は、非常にわかりやすいです。 必ず、起点が2行目にあるとすれば、 i = sh3.cells(rows.count, 2).end(xlup).row -1 '最後の次の行を探します。 そこに、offsetで、ずらしていきます。 sheets("データ").range("b2:d2").offset(i).pastespecial xlpastevalues, xlpastespecialoperationnone, false, false のようにして、全部、置換で、.offset(i). を割りこませればよいでしょう。 検索:[).p] -> 置換:[).offset(i).p] 以下で、添付したのは、マクロを集約してしまいました。 たぶん、私のコードは参考にはなりません。こんな考え方もあるのかなっていう程度にしてください。以下は、機械的に作られたものです。 '//-- sub test2macro() dim sh1 as worksheet: set sh1 = worksheets("入力画面") dim sh2 as worksheet: set sh2 = worksheets("確認画面") dim sh3 as worksheet: set sh3 = worksheets("データ") dim r1 as range, a as range dim i as long, j as long, k as long dim datas as variant, c as variant j = sh3.cells(rows.count, 2).end(xlup).row + 1 '最後の行を探します。 set r1 = sh2.range("c2:e2,c3:c5,c6:d9,c10:c14, c17") i = 2 '初期列 for each c in r1.cells sh3.cells(j, i).value = c.value i = i + 1 next c sh1.range("d6:k6,d8:k8,d4:k4,d10:k10,d12:j12" & _ ",d14:l14,l16,d16:j16,d18:j18,l18,l20" & _ ",d20:j20,l22,d22:j22").clearcontents datas = array(90, 80, 5, 5) for each a in sh1.range("d26:h26,d28:h28,d30:h30,d32:h32").areas a.value = datas(k) k = k + 1 next a end sub '//--