VBAでセルの表示形式だけをコピーする方法【PasteSpecialとNumberFormatの違い】

目次

概要

Excelでは、セルの値ではなく「表示形式(書式)」だけをコピーしたい場面が多々あります。特に、フォントや色、罫線、数値の書式などを他のセルに適用したいとき、VBAを活用することで作業を効率化できます。

本記事では、VBAを使ってセルの表示形式(書式)だけをコピーする2つの方法をご紹介いたします。

サンプルコード

Sub CopyCellFormatOnly()

    ' 方法①:PasteSpecial を使って書式のみコピー
    Range("F2").Copy
    Range("F5").PasteSpecial Paste:=xlPasteFormats

    ' 方法②:NumberFormat プロパティで表示形式のみコピー
    Range("F6").NumberFormat = Range("F2").NumberFormat

End Sub

コード解説

方法①:PasteSpecial で書式をコピー

Range("F2").Copy
Range("F5").PasteSpecial Paste:=xlPasteFormats
  • .Copy:コピー元のセルをコピーします。
  • .PasteSpecial Paste:=xlPasteFormats書式(フォント、罫線、塗りつぶし、表示形式など)だけを貼り付けます。
  • 値や数式はコピーされず、見た目だけが反映されます。

方法②:NumberFormat で表示形式だけコピー

Range("F6").NumberFormat = Range("F2").NumberFormat
  • .NumberFormat は、**セルの表示形式(例:#,##0, yyyy/mm/dd など)**だけをコピー・設定します。
  • フォントや背景色などは変更されず、純粋に書式(数値・日付などの見た目)だけが反映されます。

使い分けのポイント

方法対象特徴
PasteSpecial書式全体(フォント・罫線・色など)見た目をそのままコピーしたいときに有効
NumberFormat数値・日付などの表示形式のみ見た目のルール(書式)だけをコピーしたいときに便利

応用例

  • 数値の表示を統一するマクロ(例:売上や金額などを3桁区切りに統一)
  • 入力テンプレートのフォーマットを別のシートに適用
  • 条件に応じて動的に書式をコピー・設定する

注意点

  • PasteSpecialCopy の直後に使用しないと動作しません。
  • 貼り付け後は Application.CutCopyMode = False でコピー状態を解除するのがおすすめです。
  • NumberFormatLocal を使えば、ローカル環境に依存した書式(日本語など)も扱えます。

まとめ

本記事では、VBAを使ってセルの表示形式(書式)だけをコピーする方法を2つご紹介いたしました。

  • 見た目をまるごとコピーしたい場合 → PasteSpecial xlPasteFormats
  • 数値や日付の書式だけをコピーしたい場合 → .NumberFormat

用途に応じて適切な方法を使い分けることで、表の整形やテンプレート作成をより効率的に行うことができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次