正と負で書式を分ける
正の値と負の値の場合で書式を分けたい場合があります。よくあるのは負の値の場合は文字を赤くしたり、数値全体を括弧で囲んだり、負を表す「-」記号を△に変更したりといったことです。ここでは Excel VBA で正と負で書式を分ける方法について解説します。
(Last modified: )
正と負で書式を分ける
正の値と負の値の場合で書式を分ける場合には、正の数用の書式と負の数用の書式を用意して、セミコロンで(;)で結んで指定します。
オブジェクト.NumberFormatLocal = "(正の数用の書式);(負の数用の書式)"
例えば負の場合には赤字にする場合は次のようになります。
Range("A1").NumberFormatLocal = "#,##0;[赤]#,##0"
※このように負の値の書式を定義すると、負の値であっても先頭に「-」は付かなくなりますので注意して下さい。
他によくある書式としては次のようになります。
Range("A1").NumberFormatLocal = "#,##0;(#,##0)" Range("A1").NumberFormatLocal = "#,##0;""△"" #,##0"
正と負とゼロで書式を分ける
正と負だけではなく、ゼロの場合の書式も定義することができます。ゼロの書式も別途用意して、セミコロン(;)で区切って最後に追加します。
オブジェクト.NumberFormatLocal = "(正の数用の書式);(負の数用の書式);(ゼロの時の書式)"
ゼロの書式ですので設定できる書式にも限度がありますけど、色を変更したり、他の文字列を表示したりできます。
Range("A1").NumberFormatLocal = "#,##0;(#,##0);[青]0" Range("A1").NumberFormatLocal = "#,##0;(#,##0);""ZERO"""
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Range("A1:A4").Value = -123456 Range("A1").NumberFormatLocal = "#,##0;[赤]#,##0" Range("A2").NumberFormatLocal = "#,##0;(#,##0)" Range("A3").NumberFormatLocal = "#,##0;""△"" #,##0" Range("B1:B3").NumberFormatLocal = "#,##0;(#,##0);""ZERO""" Range("B1").Value = 1234 Range("B2").Value = -1234 Range("B3").Value = 0 End Sub
上記マクロを実行すると次のようになります。
-- --
Excel VBA で正と負で書式を分ける方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。