2013-06-21 8 views
13

どこにでもソリューションを見つけることができなかったので、私はこれを投稿しています。私はついにそれを理解した。本当に愚かなもの。MS Access RunCodeマクロは自分のプロシージャを見つけることができません

Accessマクロ内でRunCodeプロパティを使用すると、グローバルモジュールからSubを実行しようとしていました。 「入力した式にデータベースが見つからない関数名があります」というエラーが表示されていました。私は問題が何だったのか理解できませんでした。プロシージャ名

  • の最後にプロシージャ名
  • 前に「=」を使用しないでください)

    1. 使用(:私は主に以下の通りであった。この問題に掲示みんなのアドバイスを、続きます

    まだ動作しませんでした。

    答えて

    27

    それから私は慎重にエラーメッセージを読んだ。 FUNCTIONという名前が見つかりませんでした。どうやら、RunCodeプロパティには、特に「関数」がSubではないことが必要です。だから、私は単純に私のSubをFunctionに変更して、うまくいった!

    これが役に立ちます。

    +2

    私はプログラミングにアクセスするのに慣れておらず、インクルードするコードが少し必要でした。エラーはありませんが、私の "subs"はピッカーに表示されません(何かが間違っていることを示す別の指標)。 "Sub"を "Function"に置き換えるだけで本当に問題は解決しました! )ヘルプは "方向を指すことさえできませんでした... – Izzy

    +2

    ちょうどそれが何年も後に、これはまだ人々のベーコンを保存していることを知らせたいと思った – Hambone

    +0

    ありがとう私は何かを返す機能がないか、デファウルトラタイプ。単語 "Sub"を単語 "Function"に置き換えることができます。 – durette

    1

    エラーメッセージで同様の問題が発生しました。

    Function MyFunction() 
    
    End Function 
    
    0

    アクセス2013::私はMacro RuncodeMyFunction()

    例えば実行するために取得するprivate宣言削除

    private function MyFunction() 
    
    .... 
    
    end function 
    

    :私のVBAコードは次の宣言を持っていたのMyFunctionと呼ばれる関数を( )RunCodeからMyFunctionが存在しない場合、私にはエラー2425が返されます。しかし、上記のどれも私の仕事ではありません。データベースは信頼できる場所にあります。エラーをコンパイルしませんが、GoToControlは私のサブフォームを選択するために働いた後MyFunctionの中で何かがすなわち

    DoCmd.ShowAllRecords 
    

    、動作しませんでした。実際の問題は、VBAを使用してフィルタを削除するコードでした。 ShowAllRecordsのためのマニュアルは、これが動作する必要があることを示しているようだが、

    DoCmd.RunCommand acCmdRemoveFilterSort 
    

    でDoCmd.ShowAllRecordsを交換するには、私の問題を修正しました。私のために働いた

    +1

    注記したように、関数はpublicでなければならず、クラスモジュール(フォーム/レポートコードモジュールを含む)に入れることはできません。実際には、クラスモジュール内にあるsubsまたは関数を呼び出すことはできません。したがって、フォーム(またはレポート)コードモジュールは実際にはクラスオブジェクトであることに留意することが重要です。クラスモジュール内でコードを呼び出すには、まずそのオブジェクトのインスタンスを作成するか、そのインスタンスを実行する必要があります。ただし、式サービスを使用してフォーム内のパブリック関数を呼び出すことができます。これには、カスタムメニューまたはリボンコードが含まれます。 –

    2

    別の解決策:

    モジュール名は、モジュール(複数可)の手順(複数可)と同じ名前を持つことはできません。

    0

    データベースには、呼び出されているVBA関数以外のオブジェクトも必要です。他のオブジェクト(私の場合は特にテーブル)がなければ、呼び出し側の環境(Excel VBAなど)から関数を見つけることができません。

    0

    上記のJohn Tiptonに感謝し、新しい情報を追加したいと思います。私はMS Access 2016を使用していたので、この問題が発生し始めたので、この問題は依然としてその醜い頭を育てています。私の作業には、関数名とマクロ名が異なっていなければならず、関数myFunc()の後のコードでは、名前はアクセスサイドバーに表示されているモジュール名と異なる必要がありました。もう一つの奇妙なこと。マクロでRunCodeを選択すると、私が選択しようとしていた機能(Sub VBAモジュールは表示されませんでした)が表示されますが、選択したときに、マクロは関数名として単一の左括弧 "これはWindows 8 Proマシン上で実行されていました。

    関連する問題