2012-01-25 20 views
2

助けてください。アクセスVBAの評価範囲

=動作しません:

Function f() 
    f = 1 
End Function 

Private Sub Button1_Click() 
    k = Eval("f()") 
End Sub 

を=は動作しません:

Private Sub Button1_Click() 
    с=1 
    k = Eval("с") 
End Sub 

=作業を行います。

Function f() 
    f = 1 
End Function 

Private Sub Button1_Click() 
    k = f() 
End Sub 

=ヘルプで: 次の例では、あなたのことを前提としていA1、A2などとして定義された一連の50個の関数があります。この例では、Eval関数を使用してシリーズ内の各関数を呼び出します。

Sub CallSeries() 
    Dim intI As Integer 
    For intI = 1 To 50 
     Eval("A" & intI & "()") 
    Next intI 
End Sub 

バリアント1の作成方法は?

ありがとうございます。

++++++++++++++++++++++++++++

= UPDATE: 私は「と得るエラーの数がありません2425です。「関数の名前が見つかりません。」 (または、 "式の名前を見つけることができません。")。私の英語には申し訳ありません。

= UPDATE: 私は明示的にしようと評価して機能に名前を付ける:

k = Eval("[Forms]![Form1].f()") 

私はエラー31005を取得 - F「『』への参照があるので、アクセスが式を計算することができません」。私はEvalでユーザー定義の関数と変数の使用を禁止しているAccessの疑いがあります。助けは反対の状態だが。

= UPDATE:二重引用符、私にとってとしての

Function f() 
     f = 1 
    End Function 

    Private Sub Button1_Click() 
     k = Eval("val(""551" & "9" & "6"")") 
    End Sub 

非常に奇妙なルール: 作業を行います。しかし、これは私の問題を解決しません。

+1

「機能しません」を展開してください。 –

+0

私は本当にどのように知りません。それは私が持っているすべてです。 –

+2

エラーメッセージが表示されますか? k = 2ですか?あなたのコンピュータは火をつけますか? *「動作しない」とはどういう意味ですか?* –

答えて

5

Eval関数は、Formモジュールにある関数にアクセスできません。関数を通常のModuleに配置します。

+0

はい、あなたは正しいです。ありがとうございました。質問に答えます。 –

1

興味深い事実が1つあります。 Eval()はユーザ変数を引数として受け付けませんが、フォームコントロールデータを受け取ります。