• 締切済み

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

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

みんなの回答

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

期待した動作をするかはともかく、ちゃんと動くはずです。 「NumberFormatLocal = "h:mm;@"」 じゃありません。 「.NumberFormatLocal = "h:mm;@"」 です。 頭の"."をわすれないように。 「このコードは特定のシートのみに適用し 他のシートは一切関係なく、このシート上だけで繰り返し(回数は変動するシート数だけ)たいです。」 まだ「言葉足らず」のようです。 少なくとも私には意味が伝わらない。 「特定のシートのみ」 どのシート? 「このシート上だけ繰り返し」 何を繰り返すの? 「回数は変動するシート数だけ」 なんの回数? 「変動するシート数」って何? 自分がわかっているだけではダメです。 仕様がいい加減なら正しいコードは書けません。

aitaine
質問者

補足

今実行しましたが、rangeクラスのNumberFormatLocalプロパティを設定できません。 のエラーがでまして、次に進みません。 このブックの中に「総括」という名のシートを含め5個のシートがあります。 動作させたい「総括」シートの特定範囲("F14:AG28")を、行の下方向に24行目ごとに、移動しながら35回 書式を貼り付けていきたいのです。最初の範囲の左上はF14です。次にF38 次にF62、次にF86、次にF110 移動しながら、そこに特定範囲と同じ書式を貼り付けていきたいです。言葉足らずで申し訳ありません。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

こんなことかな。 Sub 書式の貼り付け() Dim sh As Object, i As Integer For Each sh In ActiveWorkbook.Sheets '"F14:AG28"の範囲に書式を設定 With sh.Range("F14:AG28") .NumberFormatLocal = "h:mm;@" '"その範囲を24行だけ移動し、全く同じ書式を貼り付ける .Copy For i = 1 To 2 '24行目のセルに貼り付け .Offset(24 * i, 0).PasteSpecial Paste:=xlPasteFormats '"その範囲をまた24行だけ移動し、全く同じ書式を貼り付ける Next End With   ' これをシートの数だけ繰り返す。 Next Application.CutCopyMode = False Range("A3").Select End Sub

aitaine
質問者

補足

ご回答ありがとうございます。以下実行しましたら NumberFormatLocal = "h:mm;@" のところでNumberFormatlocalプロパティを設定できませんというエラーがでて とまってしまいました。 それとすみません。とんでもないミスをおかしてしまいました。このコードは特定のシートのみに適用し 他のシートは一切関係なく、このシート上だけで繰り返し(回数は変動するシート数だけ)たいです。 言葉足らずでもうしわけありませんでした。よろしくお願いします。

関連するQ&A

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

    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

  • 結合セルのある範囲を、未結合の範囲に書式を張付ける

    Excel2007でマクロ作成中の初心者です。 1)1枚のシートの中の、セル範囲B30~BM59を、BR29の最下端に複写します。   ※この範囲は毎月、変動します。(28,30,31の3種類だけですが・・) 以下のコードで、セル範囲BR61~EE90に、正常に貼付けが出来ました。 Sub 範囲を右下に値を複写() Range("B30").Resize(Day(DateSerial(Year(Date), Month(Date), 0)), 66).Select Selection.Copy Range("BR29").End(xlDown).Select ActiveCell.Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End Sub 2)問題点は、セル範囲B30~BM59が、セルの結合をしている部分があり  "BR29"以下の、貼付部分のセル結合を解除する必要があり、手動で行いました。 3)"BR30"行は青色、BR31行は白色で、セル結合している2行を、先ほど貼付けしたセル範囲BR61~EE90の部分に、この書式を  貼付けしなければなりません。 4)そこで、2行の書式を、先ほど値を貼付けた部分と同じ範囲に貼りつけるにはどうしたらよろしいでしょうか。

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

    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です。 どうか、アドバイスをお願い致します。

  • エクセルのマクロ 選択したセルを指定した範囲へ値貼

    お世話になります。 自動記録したものをどのように修正したら、実行時に選択しているセルの値を、3行下、1つ左のセルから8行目までに貼り付けることができるよう書き変えられますでしょうか。 初心者で何に手を付けて良いのか分からず。どなたかご教示いただけませんでしょうか。どうぞよろしくお願い致します。 Sub 選択したセルを指定した範囲へ値貼り付け() ' ' Macro1 Macro ' ' Range("I9").Select Selection.Copy Range("H12:H19").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub

  • エクセルVBAで別範囲のセル書式設定を利用したいと思っています。

    エクセルVBAで別範囲のセル書式設定を利用したいと思っています。 最近、 Worksheets("Sheet2").Range("B1:B10").Formula = Worksheets("Sheet1").Range("B1:B10").Formula のような式を覚えたので、同じようにRangeを利用して別範囲の書式をコピーしたいと考えましたが、 .Formula に換えるプロパティがわかりません。 試しに .font.bold としても反応しませんでした。 Worksheets("Sheet1").Range("B1:B10").Copy Worksheets("Sheet2").Range("B1:b10").PasteSpecial Paste:=xlPasteFormats の2行より短くはならないのでしょうか? 宜しくお願いします

  • VBA マクロ実行時エラー’1004RangeクラスのPasteSpecialメソッドが失敗

    マクロ実行時に、エラー’1004RangeクラスのPasteSpecialメソッドが失敗と表記され、マクロが実行されません。 マクロの内容は、任意の範囲をコピー、新規book追加し、 新規bookに(1)Paste:=xlPasteValues (2)Paste:=xlPasteColumnWidths (3)Paste:=xlPasteFormats の順に貼り付けし保存するものです。 いろいろ調べては見たのですが、当方初心者の為、わからずじまいです。お手数ではございますが、どなたかご教授願います。 下記にマクロ内容全部記載します。 よろしくお願いします。 ********************************************************* ********************************************************* Sub 日報別ファイルに保存したい1() Worksheets("日報").Range("A3:AF36").Copy With Workbooks.Add Cells.Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Cells.Select Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Range("A1").Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False ApplicationDisplayAlerts = True '同名FILEが存在する場合' ActiveWorkbook.SaveAs Filename:= _ "c:\日報\" & ActiveSheet.Range("J2") & "年" & ActiveSheet.Range("l2") & "月" & ActiveSheet.Range("n2") & "日_日報.xls" _ , FileFormat:=xlNormal .Close file End With 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

  • Excelのマクロ 検索範囲を広げたい

    マクロ初心者です。 マクロが入ってるExcelファイルがあるのですが、 マクロボタンを押しても結果がでないので、たぶんマクロの検索範囲が1列しかなってないみたいなので広げたいのですが、どうしたらよいでしょうか? Sub 検索準備() ' ' 検索準備 Macro ' ' Sheets("データ表").Select Range("A3:ES2002").Select Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Sheets("検索表").Select Range("A4").Select ActiveCell.FormulaR1C1 = "=+R[1]C" Range("A4").Select Selection.Copy Range("B4:ES4").Select Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Sheets("個人スキル").Select Range("D3:E3").Select End Sub Sub スキル検索() ' ' スキル検索 Macro ' ' ' Sheets("検索表").Select Range("A4:ES4").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1:ES4").Select Application.CutCopyMode = False Selection.Copy Sheets("計算表").Select ActiveWindow.SmallScroll ToRight:=-3 Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=True Range("F1:J149").Select Application.CutCopyMode = False Selection.Copy Range("L1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveWindow.SmallScroll ToRight:=4 Range("L13:P149").Select Application.CutCopyMode = False Selection.Sort Key1:=Range("L13"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("L23").Select Sheets("個人スキル").Select Range("D3:E3").Select End Sub 検索準備ボタンと、スキル検索2種類ボタンがあります。 どこをいじくればよいのか分かりません。 検索表の検索範囲が表題を抜かして人の名前などが入ってる列が1列しかなってないので・・・

  • エクセルVBAで書式と値の貼付けにつて

    エクセル2007VBAで新規ファイルを作る場合のコピー、貼り付けで質問しましたが 式も全て貼り付けになるとUSBメモリーで持ち出した場合、エラーとなります。 それで値と書式のみ貼り付けする様下記の様に書き直しましたが、.PasteSpecialでメソッドまたはデータメンバーが見つかりませんとなります。 ぐぐっててヘルプを見ますが解決出来ません。どなたがご教授お願いします。 元の式 Sub DGCopy() Workbooks.Add With ThisWorkbook .Sheets(5).Cells.Copy Sheets(1).Cells Sheets(1).Select Sheets("Sheet1").Name = "電気代" .Sheets(6).Cells.Copy Sheets(2).Cells Sheets(2).Select Sheets("Sheet2").Name = "ガス代" F = Application.GetSaveAsFilename(FileFilter:="Excelブック (*.xls),*.xls)") If F = "False" Then Exit Sub ' ダイアログでCancelをクリックした場合 ActiveWorkbook.SaveAs Filename:=CStr(F) End With End Sub 書き直した式 Sub DGCopy() Workbooks.Add With ThisWorkbook Sheets(5).Select Cells.Selection.Copy Sheets(1).Selection .PasteSpecial Paste:=xlPasteFormats ←エラー部分 .PasteSpecial Paste:=xlPasteValues Sheets("sheets1").Name = "電気代" Sheets(6).Select Cells.Selection.Copy Sheets(2).Selection .PasteSpecial Paste:=xlPasteFormats .PasteSpecial Paste:=xlPasteValues Sheets("sheets2").Name = "ガス代" F = Application.GetSaveAsFilename(FileFilter:="Excelブック (*.xls),*.xls)") If F = "False" Then Exit Sub ActiveWorkbook.SaveAs Filename:=CStr(F) End With End Sub

  • コピーと貼付

    既存のデータはA~Y列まで入力されています。 新規のデータはA~W列までとなっています。 既存のX行には日付をいれてあり、新規データのX列に次月の1日(ついたち)を入力したい。 とりあえずは、1行下に日付を入力したマクロを組んだのですが、その後50行前後もコピーし貼付したいのですが、範囲の選択がうまく出来ません。 途中のセルから最終行のセルの範囲選択のマクロを教えてもらえないでしょうか。 ※Y列はダブルクリックコピーで問題ないので大丈夫です。 例   A列・・・・・・    X列      Y列(検索の関数が入っています) 1  ABC・・・・・・   2011/6/1    1    ※既存のデータ 2  DDD・・・・・・   2011/7/1         ※新規データの1列目 3  FFF・・・・・・   (      )                4  GGG・・・・・・   (      ) 5   ・ 6   ・ 7   ・ 8   ・ 50 ZZZ・・・・・・   (       ) 新規の2列目以降に、新規で作成した日付をコピーし貼付したい。 上記までのマクロを参考に送ります。 教えて下さい。 Sub test() Dim MaxRange '最終行番号 MaxRange = Range("X3").End(xlDown).Row '最終行の設定 Range("X3").Select Selection.End(xlDown).Offset(1, 0).Select 'X列の最終行+1行目を選択 ActiveCell.FormulaR1C1 = "=EDATE(R[-1]C,1)" '同セルに関数入力 Range("X" & MaxRange - 1).Copy '書式の変更(変更前の最終行よりコピー・貼付) Range("X3").Select Selection.End(xlDown).Offset(0, 0).Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Range("X3").Select '追加したセルの関数を値に変更 Selection.End(xlDown).Offset(0, 0).Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub

専門家に質問してみよう