こんにちは。VBA講師の佐藤です。日々の業務で「セルの値をそのままに、見た目だけを整えたい」という場面、よくありますよね。今回は、VBAで表示形式を操るための最も基本的かつ強力なプロパティ「NumberFormatLocal」について解説します。
なぜ「Value」ではなく「表示形式」をいじるのか?
実務では、計算結果をそのままデータとして保持しつつ、レポート出力時だけ「円」をつけたり「桁区切り」を入れたりする必要があります。もしセルの中に「1000円」と文字列で入力してしまうと、そのセルは計算に使えなくなりますよね。
VBAで表示形式を変更すれば、データ(数値)は数値のまま、見た目だけをビジネス仕様に変えることが可能です。これが、Excelをデータベースとして正しく使うための鉄則です。
NumberFormatLocalの基本構文
VBAで表示形式を変更する際、最もよく使われるのが「NumberFormatLocal」プロパティです。
サンプルコード:売上金額を日本円形式にする
例えば、A列に並んだ数値データに、カンマ区切りと「円」を付与するコードを書いてみましょう。
Sub FormatCurrency()
‘ A列のデータ範囲を指定
With Range(“A1:A10”)
‘ カンマ区切り、円表示にする
.NumberFormatLocal = “#,
0″”円”””
End With
End Sub
このコードのポイントは「””円””」の部分です。VBAの中でダブルクォーテーションを表示形式の定義に含める場合、二重に重ねることでエスケープさせる必要があります。ここを忘れてエラーが出る受講生が非常に多いので、注意してください。
「Local」を使う理由
初心者のうちは「NumberFormat」と「NumberFormatLocal」のどちらを使えばいいか迷うはずです。結論から言うと、日本で実務を行うなら「NumberFormatLocal」一択です。
なぜなら、Excelの表示形式はPCの地域設定に依存するからです。「NumberFormat」は英語圏の標準設定を基準にしますが、「NumberFormatLocal」は「今、皆さんが使っているExcelの表示形式(日本語設定)」をそのまま適用できるため、意図しない表示崩れを防ぐことができます。
次回の予告
今回は基礎の基礎でしたが、実務では「0埋め(001, 002…)」や「日付の和暦変換(令和5年…)」など、より複雑な形式が求められます。次回は、これらを自在に操るための「ユーザー定義書式」の活用テクニックについて深掘りします。
まずは今日のコードを、手元のリストで試してみてください。見た目が変わるだけで、作成したツールの「プロっぽさ」が一気に増しますよ。それでは、また次回お会いしましょう。
