memorandums

日々の作業ログです。

MS-Excel 実行時エラー 400

MS-Excelで研究用のシミュレータプログラムを作っています。といっても小さなプログラムで、ある運動方程式を数値積分してその結果をグラフに描画するというものです。

で、開発マシンでは問題なく動いていたのになぜか違うマシンでは以下のエラーが。実行時エラーなのでエラー部位も示してくれません。

ネットで調べてもはっきりしたものは見つかりませんでした。で、いろいろやった結果、原因がわかりました。


開発マシンにはOffice2007が入っていて、それでグラフ調整用のプログラム*1をマクロを生成して作りました。もちろん、そのプログラムはOffice2007では動作するのですが、実行時エラーが出たマシンにはOffice2003が入っていたため、そのプログラムが無効と処理され実行時エラーとなったようです。以下のように修正しました。

ActiveSheet.ChartObjects("グラフ 1").Activate ←2007ではOK、2003ではNG

これを

ActiveSheet.ChartObjects("Chart 1").Activate

のように書き換えるとどちらでも動作しました。

ExcelVBAは扱いが簡単でプロトタイプ開発に向いているのですがバージョンによって微妙に違うところがくせものですねぇ。

*1:シミュレーション条件によって計算結果のデータ数が増減するのでその数をグラフ部品に設定するためのプログラム