Top小ネタ色々Excelで有効数字

Excelで有効数字

2010年1月23日


5.数式が・・・

とりあえず出来た!と喜んで、色々な数字でテストしてみて、予想以上に上手く動く事に気付くものの、いきなり壁にぶつかる。

事件はセルに数式が入っていた場合に起こった。

セルの中身が仮に

=123455+1

だった場合(画面上は「123456」)、マクロを実行した後のセルに書き込まれるのは

=ROUND(123456,1-INT(LOG10(123456)))

となり、見た目上は「120000」と有効数字2桁になっているものの、数式が失われているので、
元々の値が失われてしまっている。これでは仕様に反してしまうのだ。
まぁよくある事だ。この程度で落ち込んでいてはマクロなんて組めない。

気を取り直して、オブジェクトブラウザでRangeのところをじっと眺めてみると、それっぽい名前の
ValueFormulaというのがある事に気付く(画像8)。


オブジェクトブラウザで
それっぽい名前を見つける

そこで、それぞれをヘルプで調べてみると

Formula
オブジェクトの数式を、A1 参照形式で、コード記述時の言語で表すバリアント型 (Variant) の値を取得、または設定します。
セルに定数が入力されているときは、Formula プロパティはその定数を返します。セルが空のときは、空の文字列を返します。
セルに数式が入っているときは、数式バーでの表示と同じ形式で、等号を含む数式を文字列として返します。
Value
指定されたセル範囲の値を表すバリアント型 (Variant) の値を設定します。値の取得および設定が可能です。

というのが出てくる。つまり、Valueで値を貰っている限りは、数式は取ってこれないという事になる。
数式を持ってくるにはFormulaで値を貰わないといけないらしい。
だが、ここで1つ問題がある。数字が入っているものはValueだろうがFormulaだろうが、
そのままRound(・・・)の式に放り込めばいいが、数式が入っていた場合は頭に「=」がくっついて出てくる。
この「=」を除かないといけないのだ。

このあたりから、プログラムを組む時特有の苦しみが始まる・・・。


[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14]

<<Prev. | 小ネタTOP | NEXT>>