質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

1回答

1441閲覧

C67~L67行を最終行に罫線と数式をコピーしたい

退会済みユーザー

退会済みユーザー

総合スコア0

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2020/06/02 11:46

最終行に67行をコピーしたいのすが、斜めにコピーされていきます。
すみません、教えてください。

Sub セルコピー()

Range("C67:L67").Copy n = Cells(Rows.Count, "C").End(xlUp).Row + 1

Range("C" & n).Select
Selection.PasteSpecial Paste:=xlPasteAll

n = Cells(Rows.Count, "D").End(xlUp).Row + 1

Range("D" & n).Select
Selection.PasteSpecial Paste:=xlPasteAll

n = Cells(Rows.Count, "E").End(xlUp).Row + 1

Range("E" & n).Select
Selection.PasteSpecial Paste:=xlPasteAll

n = Cells(Rows.Count, "F").End(xlUp).Row + 1

Range("F" & n).Select
Selection.PasteSpecial Paste:=xlPasteAll

n = Cells(Rows.Count, "G").End(xlUp).Row + 1

Range("G" & n).Select
Selection.PasteSpecial Paste:=xlPasteAll

n = Cells(Rows.Count, "H").End(xlUp).Row + 1

Range("H" & n).Select
Selection.PasteSpecial Paste:=xlPasteAll

n = Cells(Rows.Count, "I").End(xlUp).Row + 1

Range("I" & n).Select
Selection.PasteSpecial Paste:=xlPasteAll

n = Cells(Rows.Count, "J").End(xlUp).Row + 1

Range("J" & n).Select
Selection.PasteSpecial Paste:=xlPasteAll

n = Cells(Rows.Count, "K").End(xlUp).Row + 1

Range("K" & n).Select
Selection.PasteSpecial Paste:=xlPasteAll

n = Cells(Rows.Count, "L").End(xlUp).Row + 1

Range("L" & n).Select
Selection.PasteSpecial Paste:=xlPasteAll

End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

n = Cells(Rows.Count, "C").End(xlUp).Row + 1

セルに記入したあと、また最終行を取得してますので当然、
1行づつどんどんnの値が増えていきます。

変数nは行番号なので、1回取得してしまえば、あとは使いまわして使えます。
何度も取得する必要がないし、無駄です。

あと、貼り付けの際は、左上の一つのセルを指定することで、
コピーした範囲全部を貼り付けますので、
何度も貼り付ける必要がありません。

ExcelVBA

1Sub セルコピー() 2 Dim n As Long 3 4 Range("C67:L67").Copy 5 6 n = Cells(Rows.Count, "C").End(xlUp).Row + 1 7 Range("C" & n).PasteSpecial 8End Sub

あと、セルを選択するのは、目的ではないので、
選択することは無意味です。

例えば、
「C100セルに貼り付けたい」と思っていたら、
「C100セルに貼り付ける → Range("C100").PasteSpecial」と書けばいい話です。

ただし、マクロの記録では記録されませんが、
copyの命令には、貼り付け先を指定できる仕組みが用意されていますので、
以下のようにも書くことができます。

ExcelVBA

1Sub さんぷる() 2 With Range("C67:L67") 3 .Copy .End(xlDown).Offset(1) 4 End With 5End Sub

セルの位置の指定の表現は、さまざまな書き方(考え方)で
書けるようになっていますので、臨機応変に使えるよう勉強されると、
応用が利くと思います。

投稿2020/06/04 02:16

mattuwan

総合スコア2163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/06/04 12:50

回答、ありがとうございます。都度変わる一番下のセルは、それぞれ指定しないといけないと思っていました。スッキリと指定できるのですね。勉強していきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問