• ベストアンサー

ACCESS モジュールで自作した関数が、未定義関数・・・?

モジュールで自作した関数を使用する際、普段は問題なく使用できるのですが、何かの拍子に「未定義関数です」という内容のエラーが発生します。 こうなると、この関数は使えなくなります。 この関数のコードを変更しなくても、このエラーは発生します。 ACCESSそのものを再起動すると問題なく使用できます。 なぜこのようなことがおきるのでしょうか? 解決方法はありますか? よろしくおねがいします。

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

  • ベストアンサー
回答No.2

ダメ元ですがもし、プロシージャ名(Functionに続く名前)が2バイト系の日本語だったり、スペースが入ってたり、半角カナの場合は、1バイト系アルファベット(ABC等)にした方が良いかもしれません。変数などもできれば。元々米国のソフトですし。 念のためモジュールのコンパイル、MDBの再編成・修復もしたほうがいい鴨です。 場合によっては、空のMDBを作って全てのオブジェクトをインポートして直ることもあるソフトですから。

PearlJam69
質問者

お礼

ありがとうございます。 >プロシージャ名(Functionに続く名前)が2バイト系の日本語 ほぼ全てが日本語です。 >再編成・修復 視野に入れて考えます。

その他の回答 (1)

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

これだけの情報で原因がわかるはず無い。 しかしエクセルVBAの経験から、思いついたことは、 何かの原因(データとの相性が多い、突き詰めて言えばプログラムコードのデータの多様性への対処不完全)でエラーが起こり、その停止行のコード行が黄色になって止まる。 これに気が付いて、リセットすると、他のデータの場合はうまく通ッ他利する。 しかしリセットしないと他のモジュールのプログラムまで含めて走らない。 イベントプロシなど入れていると、無反応だがエラーが起こるわけでもない。 >再起動すると問題なく使用できますーー>上記は、再起動するとリセットされると思う。 こういう事態の経験とか、意識されていますか。 質問者にとってご存知のことなら、本回答は無視してください。 ーー 不規則に発生する、誤り事象は、起こったとき、当事者が自力で調べないと、そこで調べまくれない、他者には難しいでしょう。

関連するQ&A

  • 自作関数を含んだクエリをエクセルからADODBで呼び出すとエラーになる

    MS-ACESS2000を使用しています。 自作関数を含んだアクセスのクエリをエクセルから、ADODBを使って呼び出そうと すると・・・ ===================================== 実行時エラー:'-2147217900(8004e14)' 式に未定義関数'koteityo'があります ===================================== というエラーが発生します。 自作関数名:koteityo モジュール名:Mdl です。 自作関数を含んだアクセスのクエリは、アクセス上ではちゃんと動いています。エクセルに呼び出そうとすると、上記のエラーが出てしまいます。 是非とも、教えてください。

  • ACCESSエラー「モジュールがありません」

    ACCESS2000でテーブルとフォームを作っていたら下記のエラーメッセージが出てきました。 「実行時エラー'2001';直前の操作はキャンセルされました。」 その後、 「イベントプロパティに指定した式 クリック時でエラーが発生しました:モジュールがありません。※マクロ名、ユーザー定義関数名、[イベントプロシージャ]以外の式が指定されています。※関数、イベント、マクロの評価でエラーが発生しました。」 というメッセージもでてきました。また、フォームが開かなくなり誤作動をし始めたのですが原因がわかりません。どなたか回避策をご存知ないでしょうか?

  • Excelでユーザー定義関数が#NAMEと返される

    EXCELでユーザー定義関数を使用しています。 作成時は問題なく動いていたものの、保存後一度閉じたものを再度開いて数式を更新させると「#NAME」と表示されるエラーが出てしまいます。 関数は標準モジュールで定義しています。 ファイルは.xlsxで作成後、.xlmxにして保存しています。 解決方法をご存じの方がいましたら、ご教授いただければ幸いです。

  • Access2000での未定義関数replaceのエラー表示

    Access2000での未定義関数replaceのエラー表示 Access 2000を使用しています。 昨日まで順調に作業していましたが、本日クエリを実行したところ、「式に未定義関数replaceがあります」とエラー表示され、先に進めなくなってしまいました。 なぜ急にこのエラーメッセージが出たのか不思議です。 なにか対処方法があったら、教えていただければ幸です。

  • 定義した関数がフォームで使用できません。

    Visual Basic初心者です。 VB6.0を使用しています。 標準モジュールで関数を定義したのですが、フォームでその関数を使用することができません。 標準モジュールで定義した関数をフォーム上で使用するには、どのような点を変更すればよろしいでしょうか。 フォーム上コード抜粋 Sub test() Dim stats As Long Dim vi As Long stats = viVPrintf(vi, "*RST" + Chr$(10), 0) End Sub 標準モジュール上コード抜粋 Global Const VI_SPEC_VERSION = &H400000 Declare Function viVPrintf Lib "VISA32.DLL" Alias "#270" (ByVal vi As Long, ByVal writeFmt As String, params As Any) As Long

  • access2000 モジュールの削除について

    モジュール module1を削除しようとして、 モジュールの解放を行ったところ、 「ファイルへのアクセスでエラーが発生しました。 ネットワークへの接続が切断されている可能性があります」 と表示され、削除されません。 他のモジュールでmodule1の関数を使っていたためでしょうか? module1の内容は、別のファイルにコピーをとってあるので、 一度module1を削除して、あらたにmodule1を作成したいのですが、 (module1がつかえないと、他のモジュール内のmodule1とう文字をすべて書き換えないければ、ならない^^;) 上記のエラーがでてしまい、 自分では修復できません。 アドバイスお願いします。<(_ _)>

  • VB.NETのモジュールで定義した関数のように、どこからでも呼び出せる 関数は、C#でどのように記述するのでしょうか?

    C#2005で、どこからでも呼べる関数ができないか悩んでいます。 昔、関数のプログラムを作っていた頃から、進歩せず オブジェクト思考的なプログラミングが苦手で、 エラー 名前 '***関数名***' は現在のコンテキスト内に存在しません。 というエラーがたくさん出て、苦しんでおります。 VB.NETのモジュールで定義した関数のように、どこからでも呼び出せる 関数は、C#でどのように記述するのでしょうか? クラスが基本という方針はわかりますが、まず手がかりが欲しいです。

  • Access 自作関数

    お世話になります。アクセス2000です。 モジュールで以下のようなものを書きました。 月末日を求める関数を作りたかったのです。 Public Function Gend()   Dim ge As Date   ge = CDate([Forms]![F_Main]![年] & "/" & [Forms]![F_Main]![月] & "/" & "01")   ge = DateAdd("m", 1, ge)   ge = DateAdd("d", -1, ge) End Function 年は西暦4桁(2004)月は2桁(02)が入っています。 このGend()をクエリーの抽出条件欄に「 <=Gend() 」って書きましたが上手く動きません。エラーにはならないのですが、抽出件数が0件でした。(実際に#2004/02/29#ってやるとちゃんと出るのです) 初めて自作関数なるものを作成したのでどこが違うのかさっぱりです。 お助けを・・・・!

  • クラスの関数へユーザー定義型の引数を渡す(VB6.0)

    お世話になります。 クラスモジュール内へ宣言した関数へユーザー定義型(標準モジュール内でPublicで宣言)の引数を渡すとコンパイルエラーとなってしまいます。 ユーザー定義型を宣言した以外の標準モジュールでは同じ関数は動きますが、Formモジュールでは動きません。 標準モジュールにしかユーザー定義型の引数を渡すことは出来ないのでしょうか??

  • 自作モジュールを認識しない

    Perl 5.8 自作モジュールのあるフォルダをFOLDER、モジュールの名前をMODULEとして以下のコードを実行してもモジュールが見つからない旨のメッセージが表示されます。 モジュールの拡張子は.pmを使用しています。 また、モジュールを標準の拡張モジュールのおき場所に置いた場合は適切に動作しました。 #! /usr/local/bin/perl push (@INC ,FOLDER); use MODULE;

    • ベストアンサー
    • Perl

専門家に質問してみよう