• 締切済み

エクセル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行より短くはならないのでしょうか? 宜しくお願いします

みんなの回答

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

2行になっちゃうかな 上の1行でコピー(データ&書式) 下の1行でデータのみ削除 sheets1.range("b1:b10").copy sheet2.range("b1") sheets2.range("b1:b10").ClearContents おまけ(短いのが希望なら・・・ただ、お勧めはしませんよ) 上と同じ 関数使いの人には理解しやすいかも [sheet1!a1:a10].copy [sheet2!a1] [sheet2!a1:a10].clearcontents 参考程度に

Sinogi
質問者

お礼

ご回答ありがとうございます 最初ご提示の式を拝見したときは ? 状態でした(^^;; じっくり見て ! と、なりました。(遅っ) 自分は「体裁は最後に整える」傾向が強いので、結局は PasteSpecial Paste:=xlPasteFormats でやっていくことになりそうです・・・・。

全文を見る
すると、全ての回答が全文表示されます。
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

2行になるようです。 参照元セルが1個なら1行になります。 Worksheets("Sheet2").Range("B1:B10").Font.Size = Worksheets("Sheet1").Range("B1").Font.Size Worksheets("Sheet2").Range("B1:B10").Font.Bold = Worksheets("Sheet1").Range("B1").Font.Bold Worksheets("Sheet2").Range("B1:B10").Font.FontStyle = Worksheets("Sheet1").Range("B1").Font.FontStyle PasteSpecial以外で、セルの書式をひと括りでCopy&Pasteする方法があるかどうか分かりません。

Sinogi
質問者

お礼

ご回答ありがとうございます やっぱり = 式にしようとすると、書式プロパティごとの記述となるんですかね。 xlPasteFormats みたいな「書式」ってプロパティがあればなぁ・・・・なんて思った次第です

全文を見る
すると、全ての回答が全文表示されます。

関連する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

  • 助けてください!!VBA初心者なんですが、複数範囲をコピーして指定列に貼り付けたいのですが

    助けてください!!VBA初心者なんですが、複数範囲をコピーして指定列に貼り付けたいのですが、エラーが出てしまいます。 説明が下手なので図のようなもので 下図1  ABCDE 1あいうえお 2あいうえお 3あいうえお 4あいうえお 下図2  ABCDEFGHIJ 1あ い う  え お 2あ い う  え お 3あ い う  え お 4あ い う  え お まずは下図1のように下図2の様に指定した列に貼りたいのですが。 Range("A1:E5").Copy Range("A1,C1,E1,H1").PasteSpecial Paste:=xlValues でエラーになり別々にと考えて Range("A1:A5,B1:B5,C1:C5,D1:D5,E1:E5,").Copy Range("A1,C1,E1,H1").PasteSpecial Paste:=xlValues でも無理でした…なにかいい方法があれば教えてください。 単純に Range("A1:A5").Copy Range("A1").PasteSpecial Paste:=xlValues Range("B1:B5").Copy Range("C1").PasteSpecial Paste:=xlValues Range("C1:C5").Copy Range("E1").PasteSpecial Paste:=xlValues Range("D1:D5").Copy Range("H1").PasteSpecial Paste:=xlValues Range("E1:E5").Copy Range("a1").PasteSpecial Paste:=xlValues とするしかないんでしょうか? なにかいい方法があればお教えください!!

  • Excel2000/VBA:値と書式のみ貼り付けたい。

    Excel2000のVBAで値と書式のみ貼り付けたいのですが、可能でしょうか。2Excel2003なら Range("A1:Y100").PasteSpecial Paste:=xlPasteValuesAndNumberFormats でうまくいくのですが、Excel2000だとエラーがでます。「Range クラスの PasteSpecial メソッドは、失敗しました」とでます。これが、Paste:=xlPasteValues ならちゃんと貼り付けできますのでコピー範囲がセレクトされていない原因のエラーではないようです。

  • 【VBA】コピー&複数個所のペースト繰り返し

    下記のように、1つの値をコピーし、別シートの複数個所(同じ列の違う行)へ順次ペーストしたいのですが、貼付けデータやペースト箇所が増えた場合でも対応できるようなVBAを教えてください。 よろしくおねがいいたします。 ========================================================= Sub コピペ() '←1人目をコピー Worksheets("“コピー元シート”").Range("B7").Select Selection.Copy '←貼付け Worksheets(“貼付シート”).Range("B9", "B37", "B65", "B93", "B121", "B149", "B177").Select Selection.PasteSpecial Paste:=xlPasteFormulas '←2人目をコピー Worksheets("“コピー元シート”").Range("B8").Select Selection.Copy '←貼付け Worksheets(“貼付シート”).Range("B11", "B39", "B67", "B95", "B123", "B151", "B179").Select Selection.PasteSpecial Paste:=xlPasteFormulas '←3個の値をコピー Worksheets("“コピー元シート”").Range("B9").Select Selection.Copy '←貼付け Worksheets(“貼付シート”).Range("B13", "B41", "B69", "B97", "B125", "B153", "B181").Select Selection.PasteSpecial Paste:=xlPasteFormulas '←4個の値をコピー Worksheets("“コピー元シート”").Range("B10").Select Selection.Copy '←貼付け Worksheets(“貼付シート”).Range("B15", "B43", "B71", "B99", "B127", "B155", "B183").Select Selection.PasteSpecial Paste:=xlPasteFormulas '←5個の値をコピー Worksheets("“コピー元シート”").Range("B11").Select Selection.Copy '←貼付け Worksheets(“貼付シート”).Range("B17", "B45", "B73", "B101", "B129", "B157", "B185").Select Selection.PasteSpecial Paste:=xlPasteFormulas End Sub

  • Excelの三つのVBAを一つにまとめる。

     初めまして、よろしくお願いします。当方全くの素人でVBAの基礎もよくわからず、ネットから拾ってきていじった三つのVBAがあります。この三つ、一つ一つは個別に機能するのですが、VBAとして正しいのかさえよく解っていません。この三つを一つにまとめて、同時に機能するようにしたいと頭を抱えています。 Sub TEST() Application.ScreenUpdating = False Application.EnableEvents = False ActiveSheet.Calculate Range("b10:b20").Insert shift:=xlShiftToRight Range("b10:b20").Value = Range("a10:a20").Value Application.OnTime TimeValue("09:00:00"), "TEST" Application.ScreenUpdating = True Application.EnableEvents = True ActiveWorkbook.Save End Sub ________________________________________________________________ Sub TEST1() Application.ScreenUpdating = False Application.EnableEvents = False ActiveSheet.Calculate Dim myCnt As Long Range("c30:c40").Copy Range("d30:d40").PasteSpecial Paste:=xlPasteValues Range("b30:b40").Copy Range("c30:c40").PasteSpecial Paste:=xlPasteValues Range("a30:a40").Copy Range("b30:b40").PasteSpecial Paste:=xlPasteValues nextTime = Now() + TimeValue("01:00:00") Application.OnTime nextTime, "TEST1" Application.ScreenUpdating = True Application.EnableEvents = True ActiveSheet.Calculate ActiveWorkbook.Save End Sub ________________________________________________________________ Sub TEST2() Application.ScreenUpdating = False Application.EnableEvents = False ActiveSheet.Calculate Dim myCnt As Long Range("c50:c60").Copy Range("d50:d60").PasteSpecial Paste:=xlPasteValues Range("b50:b60").Copy Range("c50:c60").PasteSpecial Paste:=xlPasteValues Range("a50:a60").Copy Range("b50:b60").PasteSpecial Paste:=xlPasteValues nextTime = Now() + TimeValue("00:10:00") Application.OnTime nextTime, "TEST2" Application.ScreenUpdating = True Application.EnableEvents = True ActiveSheet.Calculate ActiveWorkbook.Save End Sub ________________________________________________________________  解る方、よろしくお願いします。

  • EXCEL VBAで、PasteSpecialと Destinationの組み合わせ方法?

    ここで教えていただいたマクロで ActiveSheet.Paste Destination:=Workbooks(\"book1.xls\").Worksheets(\"Sheet1\").Range(\"A1\") のペースト部分を書式を除きたいので PasteSpecial Paste:=xlFormulas でやりたいのですが、どう組み合わせたらいいのかわかりませんでした。 おしえていただけませんでしょうか?

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

    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

  • エクセル VBA 各シートに貼り付け

    いつも皆様には大変お世話になっております。 表題に書いたようにコピーしたものを貼り付けしたいのですがうまく動きません。 Sheets("A").Select Range("B8:B38").Select Selection.Copy For Each sh In Worksheets If sh.Name <> "A" Then Range("B12:B42").Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Range("F38").Select ActiveWindow.SmallScroll Down:=-12 End If Next と言った様な構文を書いているのですが Aのファイル内のみでコピーして貼り付けをやってしまいます。 ちなみにシートはB,C,Dなど各種あります。 よろしくお願いいたします。

  • エクセルVBAでコピーすると行の高さが低くなる

    いつもお世話になってます。 エクセル2003のVBAで、セルの範囲を指定してコピーすると行の高さが低くなってしまいます。その他の書式は、変化せずうまくコピーできています。以下がプログラムです。 Sub copy_hyou() Worksheets("sheet1").Activate Range("A1:K24").Copy 'セルA1からK24をコピーします。 Range("A25").Select 'A25からペイストします。 ActiveSheet.Paste End Sub どう直せば、行の高さもコピーできるでしょうか? お休み中すみませんがよろしくお願いいたします。

  • VBA:Offsetから値が貼付けれない

    はじめまして。 VBAを利用してマクロを作っているのですが、 Range("a6:l6").Copy Worksheets("結果シート").Range("A65536").End(xlUp).Offset(1) というのは動くのですが、結果シートへの貼付けを「値」で行いたいと思い、 以下の通りValueを指定しても動きません。 Range("a6:l6").Copy Worksheets("結果シート") .Range("A65536").End(xlUp).Offset(1).value PasteSpecialを使うと良いのかと思い、 Range("a6:l6").Copy Worksheets("結果シート") .Range("A65536").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues としてもエラーが出ます。 数式の結果を取得して、別のシートの空白セルを探し、「値」として張付ける。 というのがしたいのですが、なにか上手い方法があれば、ご教授お願いします。

専門家に質問してみよう