どこにも解決策を見つけることができなかったので、私はこれを投稿しています。私はついにそれを理解しました。本当に馬鹿げている。
Accessマクロ内でRunCodeプロパティを使用しているときに、グローバルモジュールからSubを実行しようとしました。 「入力した式の関数名がデータベースで見つかりません」というエラーが表示されました。問題が何であるか分かりませんでした。私はこの問題について投稿したすべての人のアドバイスに従いましたが、ほとんどは次のとおりです。
それでも機能しませんでした!
その後、エラーメッセージを注意深く読みました。 FUNCTION名が見つからなかったことに言及しています。どうやら、RunCodeプロパティには、Subではなく「Function」が特に必要です。だから、単にSubをFunctionに変更しただけでうまくいきました!
お役に立てれば。
私のために働いた別のソリューション:
モジュール名は、モジュール内のプロシージャと同じ名前にすることはできません。
エラーメッセージについても同様の問題がありました。私のVBAコードには次の宣言がありました。
_private function MyFunction()
....
end function
_
private
宣言を削除して、MyFunction()
を実行する_Macro Runcode
_を取得しました
例えば:
_Function MyFunction()
End Function
_
Office 365にアクセスする:VBA内から呼び出され、マクロで使用されていたサブルーチンが動作します。関数テキストを別のモジュールに移動し、単独で保存しました。モジュール(クラスではない)に一意の名前を付けます。
私の間違いは、通常のモジュールではなくクラスモジュールに関数を置くことでした。
データベースには、呼び出されるVBA関数以外のオブジェクトも必要であるようです。他のオブジェクト(特に私の場合はテーブル)がなければ、関数は呼び出し環境(Excel VBAなど)から見つけることができません。
Access 2013:MyFunctionが存在しないRunCodeからMyFunction()を使用して呼び出された関数は、エラー2425を返します。ただし、上記のいずれも機能しません。データベースは信頼できる場所にあります。コンパイルエラーはありませんが、MyFunctionの何かが機能しませんでした。つまり、
DoCmd.ShowAllRecords
goToControlがサブフォームを選択するために働いた後。本当の問題は、VBAでフィルターを削除するコードでした。 ShowAllRecordsのマニュアルは、これが機能することを示しているようですが、DoCmd.ShowAllRecordsを
DoCmd.RunCommand acCmdRemoveFilterSort
私の問題を修正しました。
上記のジョン・ティプトンに感謝し、いくつかの新しい情報を追加したかった。私はMS Access 2016を使用していましたが、この問題が発生し始めたため、この問題は依然としてい頭を抱えています。私が機能するためには、関数名とマクロ名が異なっていなければならず、関数myFunc()の後のコードでは、名前がAccessサイドバーに表示されるモジュール名と異なっていなければなりませんでした。もう一つの奇妙なこと。マクロでRunCodeを選択すると、関数が表示されます(サブVBAモジュールは表示されません)選択しようとしましたが、選択すると、マクロは単一の左かっこ「(」で関数名としてコーディングしました。これはWindows 8 Proマシンで実行されていました。