2009-08-20 5 views
1

非常に単純な問題:私は、フォーム上のボタンから呼び出すPublic Sub(モジュール内)を持っています。モジュールから呼び出す関数の名前はGenerateKMLです。MS AccessのフォームからPublic Subを呼び出す

は、私がこの記事を読んだ:

How do I call a VBA Function into a Sub Procedure

そして、私のために働いているいずれも示唆した方法の全てを試してみました。私のコードに問題があるかもしれませんが、私がコードビュー(モジュールの編集)で「再生」ボタンを押すとコードが正しく実行されます(KMLファイルが作成されます)。私が提案し第二の方法(フォームからモジュール内のサブルーチンを呼び出す)私は、このエラーメッセージを取得使用している場合

コンパイルエラー

変数またはプロシージャ予想を、ないモジュール

私が3番目の方法(イベントプロシージャを使用せずにフォームからサブルーチンを呼び出す)を使用すると、私はこれを取得します:

イベントのプロパティとしてクリックしたときの式...:入力した式に[my DB name]が見つからない関数名があります。

私は実行したいコードをどのように呼び出しているのかが間違っていると思われます。

これは私のモジュールのコードの起動方法されています

Option Compare Database 
Public Sub GenerateKML() 
' 
' GenerateKML Macro 
' Macro recorded 26/09/2006 by simon_a 
' Adapted and imported to Access by SAA 
' 03 aug 2007 - v3.0 - 2007 08 06 19 24 
' 

    ' DECLARE VARIABLES 
    Dim filename As String 
    Dim docname As String 

答えて

4

たぶん、あなたはあなたのコードがその中に手順と同じモジュール命名しました。 (単なる考え)

すなわちGenerateKMLサブは、GenerateKMLという名前のモジュールにあります。これにより、エラーメッセージ&が矛盾します。

+0

ありがとうLil'Monkey - それはそれをしました。 –

3

あなたのモジュールGenerateKMLだけでなく、あなたのサブを命名している場合は、使用してそれを呼び出す必要があります:

GenerateKML.GenerateKML arguments 

(あるいは単に、おそらく簡単です、どちらか一方を、名前の変更)

+0

ありがとうmavnn、あなたは正しかった、それは働いて改名した。 –

2

試してみますmod接頭辞:modGenerateKMLでモジュールの名前を変更します。 フォームからモジュール名を参照するのではなく、パブリックサブまたは関数の名前だけを参照します。

+0

ありがとうBeth!それがそれでした。 –

関連する問題