2010年1月23日
とりあえず出来た!と喜んで、色々な数字でテストしてみて、予想以上に上手く動く事に気付くものの、いきなり壁にぶつかる。
事件はセルに数式が入っていた場合に起こった。
セルの中身が仮に
=123455+1
だった場合(画面上は「123456」)、マクロを実行した後のセルに書き込まれるのは
=ROUND(123456,1-INT(LOG10(123456)))
となり、見た目上は「120000」と有効数字2桁になっているものの、数式が失われているので、
元々の値が失われてしまっている。これでは仕様に反してしまうのだ。
まぁよくある事だ。この程度で落ち込んでいてはマクロなんて組めない。
気を取り直して、オブジェクトブラウザでRangeのところをじっと眺めてみると、それっぽい名前の
ValueとFormulaというのがある事に気付く(画像8)。
オブジェクトブラウザで それっぽい名前を見つける |
|
|
というのが出てくる。つまり、Valueで値を貰っている限りは、数式は取ってこれないという事になる。
数式を持ってくるにはFormulaで値を貰わないといけないらしい。
だが、ここで1つ問題がある。数字が入っているものはValueだろうがFormulaだろうが、
そのままRound(・・・)の式に放り込めばいいが、数式が入っていた場合は頭に「=」がくっついて出てくる。
この「=」を除かないといけないのだ。
このあたりから、プログラムを組む時特有の苦しみが始まる・・・。
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14]