2016-05-13 15 views
1

私は2つのモジュールを持っています。 1つはプロシージャー(さまざまな照会など)を実行し、もう1つはユーザー名、変更などの表に書き込むことになっています。アクセスVBAモジュール間で変数を渡す

テーブルに書き込むスクリプトを正常に作成しました。テーブルから読み込みます。しかし、私はその変数を一方から他方に渡すことはできません。

例えば、ここではサブ/機能ReadSystemTbl()

Sub Testing() 

    Dim x As String 

    x = ReadSystemTbl("User") 

    MsgBox x 

End Sub 

から「ユーザー」の値を読み取ろうとすると、ここで値を見つけて、それを返すコードですコードです:

は、
Public Function ReadSystemTbl(FindField As String) 

Dim db As Database 
Dim rs As Recordset 
Dim SystemField As Field, SystemValue As Field 
Dim results As String 

Set db = CurrentDb() 
Set rs = db.OpenRecordset("SystemTbl") 
Set SystemField = rs.Fields("SystemField") 
Set SystemValue = rs.Fields("SystemValue") 

Do Until rs.EOF 
If SystemField = FindField Then 
    results = SystemValue 
End If 
rs.MoveNext 
Loop 

End Function 
+0

「End If」の前に「Exit Function」を追加することをお勧めします。必要がない場合は、レコードセット全体を反復処理しないでください。実際にはしないでください。コードを正しく動作させて、[codereview.se]に載せて、リソースを適切に整理する方法についてフィードバックを得てください。 –

答えて

5

私はあなただけReadSystemTbl FUNCで

ReadSystemTbl = results 

が欠けていると思います。

+0

ナイスキャッチ。 [Rubberduck](http://www.github.com/rubberduck-vba/Rubberduck)のコード検査では、 "ReadSystemTbl 'メンバの戻り値は決して割り当てられません" –

+0

これはトリックでした、ありがとう! –

関連する問題