マクロで書式のコピー_コピー先の指定の仕方で・・・

このQ&Aのポイント
  • マクロで書式のコピーをする方法について質問があります。マクロを記録した状態では、同じセルにコピーするだけでなく、コピー先を選択したセルやコピー元の何行下の行に変更したいです。具体的には、項目ごとに月ごとの集計欄を追加し、値をクリアして同じ書式のまま複数回繰り返したいです。
  • マクロを記録した状態では、特定のセルにコピーする指定が固定されていますが、これを変数などを使って柔軟に指定できるようにしたいです。具体的には、月ごとの集計を追加するために、コピー先を書き換えたり、コピー元の行を変えたりしたいです。
  • Excel 2007で試しているマクロがうまく動作しないという問題があります。マクロを記録した状態や1行マクロを試した状態で、「該当するセルがみつかりません」というエラーが出てしまいます。質問者は初心者であり、個人用マクロブックも設定していることを補足しています。アドバイスを求めています。
回答を見る
  • ベストアンサー

マクロで書式コピー_コピー先の指定の仕方で・・・

VBA勉強中の初心者です。 マクロで書式のコピーをしようと思い まずは、マクロの記録をしました。 ですが、いつも同じセルにコピーする訳ではないので プログラムに手を加えてペースト先を選択したセル もしくは、コピー元の何行下の行に・・・とか になるように書き変えたいのです。 (※筆者のやりたい事は、項目毎に毎月の集計欄を2行ずつ追加します。 『6月合計/6月実績』→『7月合計/7月実績』みたいに何月だけを変更して 書式は一緒で値はクリアにして・・と言うような事を1枚のSheet上で複数回 繰り返します。 〈マクロの記録をした状態〉 Sub 書式のコピー() Range("A2:D3").Select Application.CutCopyMode = False Selection.Copy Range("A11").Select →→→→(ここの指定を色々変わる変数みたいのでどうにかしたい) Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End Sub 分からないなりに調べて1行マクロなるものでショートカットキーを割り当てて書式のコピーをする マクロってのを試して見たのですが・・・『該当するセルがみつかりません』とエラーが出てしまいます。 上記の1行マクロは、個人マクロブックに保存しました。 個人用マクロブックはエクセルを立ち上げると自動で立ち上がるようにはなっています。 〈1行マクロの中身〉 Sub 書式のコピー() 'Keybord shortcut: Ctrl+Shift+O Selection.PasteSpecial Paste:=xlFormats End Sub どちらも色々調べて試してみたのですが、上手くいきません。 ちなみに、試しているExcelは2007です。 どうか、アドバイスをお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1601/2437)
回答No.2

> コピー元は、4月の見込,4月の実績の行でペースト先は黄色に塗った個所のようにしたいです そのあたりはなんとなくわかるのですが、セル番地がコードと画像と違うようなのでこちらでは参考コードで指定のしようがないので選択したものをコピーすることにしたということです。 またコピー先が画面では4行下だけどコードだと9行下になっているのでこれも何が正解かわからないし、複数回繰り返すと書かれていて具体的に何回かわからないので、とりあえず2回下方向にコピーするものを参考に作ってみましたということです。 > コンパイルエラー:= ] > となってしました。 Sub 書式のコピー() 同じ名前のものがあるのだと思います。適宜名前を変更してください。 エラーが出た場合、エラーメッセージを全て記載しないのは質問者さんがよくすることですが、全て記載しないとエラー内容が回答者側に適切に伝わりませんので、メッセージは全て記載するようにしてくだい。 とりあえず A1に 6月合計 A2に 6月実績 として B列以降は適当にデータを入れて データを入れた範囲の1行目と2行目を選択して実行してみてください。 なお、データの無いセルを選択し実行すると型が一致しませんというエラーがでますし、選択範囲が適切かどうかは判断していません。

umezou471
質問者

お礼

補足いただきありがとうございます。 エラーについたては、 コンパイルエラー 修正候補:= となっていました。 内容の修正の仕方を教えて頂き助かりました。

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率65% (1601/2437)
回答No.1

画像と示されたコードとでセルの位置が違うのかいまいちよくわからないのですが > (※筆者のやりたい事は、項目毎に毎月の集計欄を2行ずつ追加します。 > 『6月合計/6月実績』→『7月合計/7月実績』みたいに何月だけを変更して > 書式は一緒で値はクリアにして・・と言うような事を1枚のSheet上で複数回 > 繰り返します。 どこをコピー元にしたいのか不明なのでとりあえず選択した場所を2回下に書式コピーしてみました。 Sub 書式のコピー() Dim i As Long Dim MyMonth As Integer Selection.Copy For i = Selection.Row + 2 To Selection.Row + 4 Step 2 Cells(i, "A").Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False MyMonth = Val(StrConv(Left(Cells(i, "A").Offset(-1, 0).Value, 1), vbNarrow)) Cells(i, "A").Value = Month(DateAdd("m", 1, Year(Date) & "/" & MyMonth & "/" & "1")) & "月合計" Cells(i, "A").Offset(1, 0).Value = Month(DateAdd("m", 1, Year(Date) & "/" & MyMonth & "/" & "1")) & "月実績" Next Application.CutCopyMode = False End Sub

umezou471
質問者

お礼

回答1の方 ありがとうございます。 画像は、後から差し障りのないものを 適当に作り、イメージを伝えるように 添付しましたが、適切ではありませんでした。 すみません。 教えて頂いたコードをコピペしてみましたが、 [コンパイルエラー:= ] となってしました。 また、フォローして頂けると幸いです。 教えて頂いたコードを見て勉強させていただきます。

umezou471
質問者

補足

コピー元は、4月の見込,4月の実績の行でペースト先は黄色に塗った個所のようにしたいです。

関連するQ&A

  • ある範囲の書式を飛び飛びに貼り付けたい

    Excel2007でマクロ作成してる初心者です。  ある範囲の書式を移動しながら、書式を貼り付けていく  マクロの書き方がわかりません。どなたかご教示おねがいします。 Sub 書式の貼り付け() '"F14:AG28"の範囲に書式を設定 Range("F14:AG28").Select Selection.NumberFormatLocal = "h:mm;@" '"その範囲を24行だけ移動し、全く同じ書式を貼り付ける Selection.Copy Range("F38").Select ’24行目のセル Selection.PasteSpecial Paste:=xlPasteFormats '"その範囲をまた24行だけ移動し、全く同じ書式を貼り付ける   Range("F62").Select ’48行目のセル Selection.PasteSpecial Paste:=xlPasteFormats  これをシートの数だけ繰り返す。  ’・・・  ’・・・ Application.CutCopyMode = False Range("A3").Select End Sub

  • エクセルマクロ 繰り返して、別のシートへコピーしたい

    エクセルマクロ 繰り返して、別のシートへコピーしたい マクロ初心者のため、やり方が全くわかりません。 どなたか教えてください。 やりたいことは、 コピーするシートはあらかじめ作成しています。 簡素化の方法がわからないので、 とりあえず自分で作ってみたものが下にあるものです。 繰り返す方法がわからないので、 どなたか教えてください。 よろしくお願いします。 以下、作成したマクロです。 1行目から10行目まで繰り返したくて、 1行目から2行目のセルの移動の差は10行目までかわりません。 '1行目 Sheets("Sheet1").Select Range("B14:C14").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B15:C17").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False '2行目 Sheets("Sheet1").Select Range("B18:C18").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B19:C21").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B2").Select Range("B2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False

  • 繰り返して書式を行の下方に貼付けたいです

    Excel2007でマクロ作成中の初心者です。  特定範囲「F14:AG28」の書式「"h:mm;@"」を  F38から開始して、24行目ごとに  繰り返して貼り付けたいです。  以下自動記録で作成しましたが、繰り返しができません。  繰り返しのマクロを教えてください。 Sub test() Range("F14:AG28").Select Selection.NumberFormatLocal = "h:mm;@" Selection.Copy Range("F38").Select Selection.PasteSpecial Paste:=xlPasteFormats Range("F62").Select Selection.PasteSpecial Paste:=xlPasteFormats Range("F86").Select Selection.PasteSpecial Paste:=xlPasteFormats Range("F110").Select Selection.PasteSpecial Paste:=xlPasteFormats Range("F134").Select Selection.PasteSpecial Paste:=xlPasteFormats 以下繰り返します。 ("F158").Select ("F182").Select ・・・ ・・・  繰り返し回数は  Sheets.Count - 12 です。   Application.CutCopyMode = False End sub

  • 列を2度コピーするマクロ

    B列をC列にコピーした後、A列をB列にコピーするという2段階コピーの下記マクロを、「新しいマクロの記録」を使って作りました。 しかし下記マクロは 列選択時の青反転が実行時に残って、使用感がいまひとつです。 「新しいマクロの記録」ではなく、もっとスマートなマクロはできないでしょうか? なお、列選択ではなく必要なセル数だけ選択すれば青反転はなくなると思いますが、行数が確定していないので列選択にしたいと思っています。 ついでに下記マクロについて質問です。 11行目はなぜ5行目とは違うのでしょうか?.PasteとPasteSpecial Pasteとの違いを教えていただければ幸いです。 Sub Macro1() Columns("B:B").Select Selection.Copy Columns("C:C").Select ActiveSheet.Paste Columns("A:A").Select Application.CutCopyMode = False Selection.Copy Columns("B:B").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A2").Select Application.CutCopyMode = False ActiveWorkbook.Save End Sub

  • 指定セルをコピー

    A2~A5,D2~D5,G2~G5をコピーしJ~P列2~5行に値を貼付け続いて9~13行、16~20行もJ~P列に貼り付けたいのですが7~8,14~15行にはセル結合されているところもあります。VBAで下記コードを入力しましたがあまりにデータが多く何か良い方法VBAコードはありますか。(For~Nextなど使用すれば良いのでしょうか) 環境はoffice2013です。 Range("A2:A6").Select Selection.Copy Range("J2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("D2:D6").Select Selection.Copy Range("M2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False  Application.CutCopyMode = False

  • エクセル2003 マクロ機能を使ったコピー

    エクセルのマクロ初心者です。 コピー元は、計算式が入ったセルです。 値のみを別のシートへコピーしたいと思っていますが 40番の行でエラーとなってしまします。 行き詰ってしまったため、ご教授いただければ幸いです。 よろしくお願いします。 以下が現在のマクロです。 ================ Private Sub 10 月 = Worksheets("毎月").Cells(1, 2) 20 月 = 月 + 3 30 Worksheets("毎月").Range("F24").Copy 40 Worksheets("年").Range(Cells(月, 3)).Select 50 Selection.PasteSpecial Paste:=xlPasteValues End Sub ================

  • マクロについて教えてください

    マクロの超初心者です。 数式を入力しているのではなく、配付物をエクセルで作成しているのですが、同じもの(氏名や項目は違いますが)を100枚ほど作成しているのでマクロを・・・と思ったのですがやり方が全く分かりません。 sheet1からsheet2に下記のようにデータを写したいのですが、やり方を教えてください。 ●氏名が入力されています sheet1(A9) → sheet2(C2) sheet1(E9) → sheet2(C5) sheet1(I9) → sheet2(C8) ●項目1 sheet1(A8) → sheet2(E3) sheet1(E8) → sheet2(E6) sheet1(I8) → sheet2(E9) ●項目2 sheet1(A18~D18の結合セル) → sheet2(E2) sheet1(E18~H18の結合セル) → sheet2(E5) sheet1(I18~L18の結合セル) → sheet2(E8) と反映させたいのですが、250行あるのですが、 簡単にマクロで出来ないでしょうか?? ちなみに↓コレが上記の内容で作ってみたものです。 わかりずらい質問でスイマセン。 Range("A9").Select Selection.Copy Sheets("sheet2").Select Range("C2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E3").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E6").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E9").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A18:D18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E18:H18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I18:L18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub

  • Excel 繰り返しマクロ

    下記のようなマクロを使ってn個あるシートの内容を「集計」シートにコピーさせるようにしました。 (自動マクロとの組合せなので、スマートではないかもしれませんが) でも、これだと「集計」シートもコピー作業を行ってしまうので、 「集計」シートはコピー作業をしないように除外したいのですが、どうしたら良いのでしょう? 実際にはシート数は30程度、コピペ項目は1シートあたり30項目程度あります。 よろしくお願いします。 ------------------------- Sub テスト2() ' For i = 1 To Worksheets.Count '案件番号等コピー ' Sheets(i).Select Range("D3").Select Application.CutCopyMode = False Selection.Copy Sheets("集計").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '案件名 Sheets(i).Select Range("F3").Select Application.CutCopyMode = False Selection.Copy Sheets("集計").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '国名 Sheets(i).Select Range("E3").Select Application.CutCopyMode = False Selection.Copy Sheets("集計").Select Range("C4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '選択セルの解放 Application.CutCopyMode = False '行挿入 ' Sheets("集計").Select Rows("4:4").Select Selection.Insert Shift:=xlDown Next i End Sub

  • Excelでマクロを繰り返したい。

    Excelでマクロを記録したら以下のようになりました このマクロを以下の条件で繰り返したいのですが。 Sub Macro1() '------------- '----------------------- ' Sheets("Sheet1").Select Selection.AutoFilter Field:=4, Criteria1:="=5*", Operator:=xlAnd, _ Criteria2:="<>5@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("A3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Range("A1").Select Selection.AutoFilter Field:=4, Criteria1:="=6*", Operator:=xlAnd, _ Criteria2:="<>6@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("B3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Selection.AutoFilter Field:=4, Criteria1:="=7*", Operator:=xlAnd, _ Criteria2:="<>7@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("A103").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Range("A1").Select Selection.AutoFilter Field:=4, Criteria1:="=8*", Operator:=xlAnd, _ Criteria2:="<>8@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("B103").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub 条件= Field:は4~35位まで変動します 一連の動作をコピーして手作業で数字を変えてみたのですが プロージャが大きすぎてエラーになってしまいます。 何か良い方法は無いでしょうか?。

  • マクロ 可視セルへコピーする方法

    こんにちは。よろしくお願いします。 A~V列、300~400行程度の表を作っています。 8行目をコピーして空白行へペーストしたいのですがどのようにすれば良いでしょうか。 マクロの記録でつくったものは ActiveSheet.Paste でエラーになります。 またペースト開始行をA17ではなくて可変なものに変えたいです。 よろしくお願いします。 Sub 下までコピー() Range("A8:V8").Select Selection.Copy Selection.AutoFilter Field:=2, Criteria1:="=" Range("A17:V" & Range("B5").End(xlDown).Row).Select Selection.SpecialCells(xlCellTypeVisible).Select ActiveSheet.Paste Application.CutCopyMode = False Selection.AutoFilter Field:=2 End Sub