1,000のような桁区切りカンマを「#,##0」で設定するなど、
セルの表示形式を設定する方法を解説します。
RangeオブジェクトのNumberFormatLocalプロパティを使用します。
セルの表示形式を設定する
基本構文
設定したいセル範囲.NumberFormatLocal = 形式指定文字列
サンプルコード
Range("A2:A100").NumberFormatLocal = "G/標準" ' 標準 Range("A2:A100").NumberFormatLocal = "0" ' 整数部のみ表示 Range("A2:A100").NumberFormatLocal = "0.00" ' 小数第2まで表示 Range("A2:A100").NumberFormatLocal = "#,##0" ' 桁区切りカンマを入れた整数 Range("A2:A100").NumberFormatLocal = "@" ' 文字列 Range("A2:A100").NumberFormatLocal = "yyyy/mm/dd" ' 日付 Range("A2:A100").NumberFormatLocal = "yyyy/mm/dd(aaa)" ' 日付(曜日付) Range("A2:A100").NumberFormatLocal = "ggge年m月d日" ' 和暦 Range("A2:A100").NumberFormatLocal = "h:mm:ss" ' 時刻 Range("A2:A100").NumberFormatLocal = "[h]:mm:ss" ' 時刻(24h超過を表示) ' 列全体に反映する場合 Columns("A").NumberFormatLocal = "#,##0"
解説
セルの表示形式を設定する場合は、
設定したい文字列を対象セル範囲のNumberFormatLocalプロパティに代入します。
非常にストレートな構文のため、特に解説は不要と思います。
設定する形式指定文字列はExcelの対象ウィンドウ

こちらに普段表示/設定しているものと全く同じです。
よって、まずはこのウィンドウを使って正しく設定できたか確認し、
その後ここのテキストをVBAにコピーして扱うのがおすすめです。
セルの表示形式を調べる
NumberFormatLocalはプロパティですので、当然読み取ることも可能です。
例えば以下のコードを実行すると、
A1セルの表示形式を取得できていることが分かります。
Dim 表示形式 As String 表示形式 = Range("A1").NumberFormatLocal MsgBox 表示形式
ちなみにこのコードは複数セル範囲に対しても実行でき、
例えばA列全体が文字列「@」になっていれば、
表示形式 = Columns("A").NumberFormatLocal
このコードでも表示形式を取得可能です。
ただし、セル範囲の表示形式が統一されていない場合は、
このコードは「Null」を返しますのでご注意ください。
セル範囲の表示形式が統一されているか判定する
上記の仕様をIsNull関数で判定することで、
あるセル範囲に別の表示形式が混じっていないか判定することも可能です。
If IsNull(セル範囲.NumberFormatLocal) Then ' 表示形式が統一されていない場合の処理 End If
特定の表示形式のセルにのみ処理を実行する
例えば「文字列書式のセルにのみ処理をする」コードはこのように記載します。
Dim セル As Range For Each セル In 対象セル範囲.Cells If セル.NumberFormatLocal = "@" Then ' 文字列書式セルに対する処理 End If Next
セルの表示形式をコピーする
セルの表示形式のみをコピーする場合は以下のコードを実行します。
設定セル範囲.NumberFormatLocal = 表示形式コピー元.NumberFormatLocal
これは「セル範囲の表示形式を第1セルに合わせて統一する」場合にも流用でき、
以下のコードで表示形式の統一を行うことが可能です。
設定セル範囲.NumberFormatLocal = 設定セル範囲.Cells(1).NumberFormatLocal
以上でNumberFormatLocalプロパティの解説を終わります。
セルの表示形式を設定する場合はこちらのプロパティを使用してください。