• ベストアンサー

エクセルでマクロを実行するとコンパイルエラー

エクセルでVBエディタでソースコードを記述し、マクロを実行すると、コンパイルエラー、「SubまたはFunctionが定義されていません」とエラーが出ます。これはどういうエラーですか?何が間違っているのですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

コードの行の中に ステートメント、関数、などに見つからない行があるということ abc と書くとすると、VBAの予想するあらかじめ決まったステートメント、関数、メソッド、プロパティで存在しないので、 関数Functionプロジュアーか SUBプロシージャー を書いたものととりあえず解釈して それを探すが、別の場所に存在しないのでエラー指摘になる。 Sub test01() asd End Sub のようなのをやってご覧。同じエラーがでるよ。 何をasdに間違ったかは、その行の指摘があれば、作っているものは すぐ気が付くよ。 上記でasdの位置に RangeSelectを入れた場合は「SubまたはFunctionが定義されていません」だし Range("A1")Selectは「構文エラー」だ。微妙なものだよ。 ほんとに何かの事情で関数かSubプロシジュアーが消えたか 名前が変えられたか(1字誤って抹消したり、加わったり)もあるかもしれない。

koeshin
質問者

お礼

わざわざ御回答くださいまして有難う御座いました。原因は、単なるミスタイプでした。でも、回答文は勉強になりました。

その他の回答 (4)

  • jo-zen
  • ベストアンサー率42% (848/1995)
回答No.5

#4の方もおっしゃっている通り、コードを見てみないと適切なことは何も言えません。私の経験からも、わかってみればほんの些細なことが原因のことも多いものですが、その時にはなかなか気づかないものです。かなり、おせっかいかもしれませんが、コードを改めて投稿欄に手入力する必要はありません。「ツール」→「マクロ」→「マクロ」→「編集」で開いた画面にコードが表示されますので、それをコピーして張り付ければいいのです。但しその際、ユーザー名等、そのままでは個人情報漏洩につながる部分は貼り付けたあと、投稿画面上では削除してくださいね。お互いのためです。

koeshin
質問者

お礼

わざわざ御回答くださいまして有難う御座いました。原因は、単なるミスタイプでした。お騒がせ致しまして申し訳御座いませんでした。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 良くあるミスですが、たぶん、ローカルモジュールに書いてしまって、それを呼び出そうとしているからではないでしょうか? Excelの場合のみですが、基本的には、標準モジュールにコードを書いてください。 もしくは、左辺のない文字コードで、呼び出しに該当するプロシージャ等がないものです。 ここのカテゴリでのVBAの質問は、最低限、このエラーを出したコードを見せてください。別に、それが恥ではありません。 なお、Excel VBAは、実行前にコンパイルしています。他のプログラミング言語と同じように、中間言語として、仮想メモリの中に存在していますが、実行ファイルとして出力されていないだけです。

koeshin
質問者

お礼

わざわざ御回答くださいまして有難う御座いました。原因は、単なるミスタイプでした。お騒がせ致しました。申し訳御座いませんでした。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

>これはどういうエラーですか?何が間違っているのですか? ソースを見ないと何とも言えませんが、ミスタイプなどで何らかのプログラムを呼び出すような記述になっているのだと思います。 Sub test1() MsgBox aaa() bbb End Sub Function aaa() aaa = "xyz" End Function Sub bbb() MsgBox "end" End Sub Function aaa()やSub bbb()が存在しない場合はエラーが出ます。

koeshin
質問者

お礼

わざわざ御回答くださいまして、有難う御座いました。原因は、単なるミスタイプでした。お騒がせ致しまして申し訳御座いませんでした。

  • my3027
  • ベストアンサー率33% (495/1499)
回答No.1

コード中に、定義してない関数かサブルーチンを使っているという事です。一行ずつ実行していけば、未定義箇所でエラーになります。 ちなみにエクセルVBAはインタープリターなのでコンパイルはしないと思います。

koeshin
質問者

お礼

わざわざご回答を有難う御座いました。原因は、単なるミスタイプでした。お騒がせ致しまして申し訳御座いませんでした。

関連するQ&A