dポイントプレゼントキャンペーン実施中!

エクセルVBAマクロを使って簡単なゲームを作成したのですが、原因不明のエラーに悩まされています。

ファイルを開いて、シート上のある部分をクリックすると UserForm1.Show となってゲームが開始される仕組みになっているのですが、この UserForm1.Show という命令のところで「実行時エラー '76' パスが見つかりません」が出てしまいます。

不思議なことに、ファイルを別名で保存しなおすと、このエラーが出なくなります。このひと手間で当座は遊べていますが、気持ちが悪いので原因を知りたいと思っています。

まず、UserFormを開くときに「パスが見つからない」というのはどういう事態なのでしょうか? 特にファイルを参照している箇所ではないので、皆目見当がつきません。また、別名で保存すると解消される理由としては何が考えられるでしょうか。


部分的な回答でも構いませんので、どうか知恵を貸していただければ幸いです。

A 回答 (1件)

VBAが明確に外部ファイルを使用する箇所について、


既に確認済みであり、原因が他の箇所にあるという前提です。

別名保存で解消されることから予想できるのは次の3点です。

1. カレントディレクトリに依存している
2. 「パスが見つからない」のは自分自身のパス
3. 再コンパイルによって解決している

これをヒントに、コードやフォームの全部品のプロパティなど、
詳細に見直すのが解決の道でしょう。

すべて問題が無いということでしたら、
Excel VBA の宿命的な不具合、
ソースとバイナリの不一致を疑う必要もあります。

VBA は、所詮、簡易開発環境なので、明示的なリビルドを持ちません。
バグというより、コンパイラの仕様として、
何度も修正を加えるとゴミが溜まります。
稀に、ゴミが影響し、
実行バイナリと VBA ソースが一致しないケースが発生します。

これに対する完全な処方箋は、
新規ブックにソースなどを全部テキストとしてコピーし、
ゼロからのコンパイルをすることです。

私はよく、次のSSFツールを使って掃除しますが、
現バージョンは UserForm 未対応なので、
ワンタッチとはいきませんね。

http://ssfja.wordpress.com/2011/05/22/how_to_get/

参考URL:http://ssfja.wordpress.com/start_here/
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています