とあるプログラマーの覚書

Visual Basic .NET編:Excelの各セルの書式設定で「数値」を設定する方法

スポンサーリンク

過去、Excelオートメーションに関する以下の記事を書かせて頂きました。
Visual Basic .NET編:ExcelオートメーションやVBAで、二次元配列を使って値を設定する方法について

今回も、Excelオートメーションに関連した記事ですが、Excel VBAでも使える話になります。
需要があるかは別ですが(笑)

Excelのセルに、特に書式設定もせずに「数値」を設定した場合、処理終了後にそのExcelを開いて、該当セルの「書式設定」を見てみると、「数値」ではなく「標準」となっています。
別にこれで問題は無いのですが、もし、書式設定を「数値」にして欲しい!というような要望があったら…と思って、設定方法を調べてみました。

書式設定は、RangeオブジェクトまたはCellsオブジェクトの「NumberFormatLocal」というプロパティを使います。
このプロパティの設定方法に関しては、様々なサイトがありましたが、例えば以下のページ
【Excel VBA サンプル集】表示形式を設定する – ExcelVBA@Workshop

数値に設定する場合は、NumberFormatLocalに「”00.0″」とか「”###,##0″」を設定するとあります。
他のサイトでも、同じような感じで「”0″」やら「”0.0″」やらを設定するとあります。

ですが、実際に以下のように設定しても、、、


‘Rangeの引数は適当
Range(“K4″).NumberFormatLocal = “00.0”


この後、Excelの該当セルの書式設定を見てみると、「数値」ではなく「ユーザー定義」となっていました。
という事で、書式設定を「数値」とする方法を模索してみました。
私のリサーチでは、どんなサイトでも掲載されていませんでしたので、実際にExcel上で「数値」に設定した後、VBAで「NumberFormatLocal」の値を見る、という手法で調べてみました。
以下のようになっているようです。


数値 「少数点以下の桁数」0 「桁区切りを使用する」チェック無し 「負の数の表示形式」赤字で(1234)
0_);[赤](0)

数値 「少数点以下の桁数」0 「桁区切りを使用する」チェック無し 「負の数の表示形式」黒字で(1234)
0_);(0)

数値 「少数点以下の桁数」0 「桁区切りを使用する」チェック無し 「負の数の表示形式」赤字で1234
0;[赤]0

数値 「少数点以下の桁数」0 「桁区切りを使用する」チェック無し 「負の数の表示形式」-1234
0_

数値 「少数点以下の桁数」0 「桁区切りを使用する」チェック無し 「負の数の表示形式」-1234
0_;[赤]-0

数値 「少数点以下の桁数」0 「桁区切りを使用する」チェック無し 「負の数の表示形式」△1234
0;”△ “0
※注1 「△」の後は半角スペース必要
※注2 実際に設定する場合は、文字列なので「”」はエスケープ(「””」)が必要

数値 「少数点以下の桁数」0 「桁区切りを使用する」チェック無し 「負の数の表示形式」▲1234
0;”▲ “0
※注1 「▲」の後は半角スペース必要
※注2 実際に設定する場合は、文字列なので「”」はエスケープ(「””」)が必要

数値 「少数点以下の桁数」1 「桁区切りを使用する」チェック無し 「負の数の表示形式」赤字で(1234)
0.0_);[赤](0.0)

数値 「少数点以下の桁数」0 「桁区切りを使用する」チェック有り 「負の数の表示形式」赤字で(1234)
#,##0_);[赤](#,##0)


全組み合わせを出すと大変そうなので、ここまでにしておきます。
一応は規則性があるようですが、結構難しいですね。
もし自分で設定内容を見てみたいときは、Excel VBAでマクロを組んで、以下のようなコードを書き、


MsgBox Range(“K4″).NumberFormatLocal


これで、K4セルに、自分が施したい書式設定をExcel上で行ってから、マクロを実行すると、そのときのNumberFormatLocalの内容を見る事が出来ます。(この方法で調査しました。)

需要はあまり無いかもしれませんが…(笑)
今回は以上です。


スポンサーリンク

URL :
TRACKBACK URL :

Leave a Reply

*
* (公開されません)

*

*

Return Top