OfficeType

VBA~正の値と負の値で色分けしよう~Excel

VBAでセルに表示形式を設定したい時はRange.NumberFormatLocalプロパティで設定できます。

正と負で書式を分けたい場合は、例えば"[青][>0]G/標準;[赤][<0]-G/標準;[黒]G/標準"と設定すれば正の時が青、負の時が赤、0の時が黒で表示されます。最初の[青][>0]G/標準が値が>0の時に標準書式で青色に表示するという意味になります。;(セミコロン)で区切ることで複数の条件を指定できます。次の[赤][<0]-G/標準が値が<0の時に標準書式にマイナスを付けて赤色に表示するという意味になります。次の[黒]G/標準は条件が入力されていないので前の2つの条件に当てはまらない場合(今回の場合は0)は標準書式で黒で表示するという意味になります。

範囲内で数値を書き換えると当てはまる条件の色に変更されます。

単一セルに表示形式を設定

下のコードを実行するとセルA1に表示形式が設定されます。

Sub test1()

Range("A1").NumberFormatLocal = "[青][>0]G/標準;[赤][<0]-G/標準;[黒]G/標準"

End Sub

image-01

image-02

image-03

image-04

範囲に表示形式を設定する

範囲を指定したい時はRange("範囲の左上のセル:範囲の右下のセル")で指定できます。

下のコードを実行するとセルA1からセルC3に表示形式が設定されます。

Sub test2()

Range("A1:C3").NumberFormatLocal = "[青][>0]G/標準;[赤][<0]-G/標準;[黒]G/標準"

End Sub

image-05

image-06

指定したシートのセルに表示形式を設定する

シートを指定するときはWorksheets("シート名")で指定できます。

下のコードを実行するとSheet2のセルA1に表示形式が設定されます。

Sub test3()

Worksheets("Sheet2").Range("A1").NumberFormatLocal = "[青][>0]G/標準;[赤][<0]-G/標準;[黒]G/標準"

End Sub

image-07

image-08

image-09

image-10

ブックを指定して表示形式を設定

ブックを指定するときはWorkbooks("ブック名")で指定できます。

Book1.xlsxというブックが開いた状態で下のコードを実行するとBook1.xlsxのSheet1のセルA1に表示形式が設定されます。

Sub test4()

Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").NumberFormatLocal = "[青][>0]G/標準;[赤][<0]-G/標準;[黒]G/標準"

End Sub