2016-05-13 7 views
1

У меня есть два модуля. Один запускает процедуру (различные запросы и т. Д.), А другой должен записывать в таблицу, например, имя пользователя, внесенные изменения и т. Д.Доступ к VBA Передача переменной между модулями

Я успешно написал сценарий, который записывает в таблицу и один который читается из таблицы. Однако я не могу передать эту переменную от одной к другой.

Например, вот код, который пытается читать «User» значение из суб/функции 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

Рассмотрите возможность добавления 'Exit Function' перед' End If', чтобы вы не перебирали весь набор записей, если вам это не нужно. На самом деле .. нет. Сделайте свой код работать и поместите его на [codereview.se], чтобы получить обратную связь о правильной очистке ресурсов. –

ответ

5

Я думаю, что вы просто не хватает

ReadSystemTbl = results 

в FUNC ReadSystemTbl Тион.

+0

Yup. Хорошо поймал. [Rubberduck] (http://www.github.com/rubberduck-vba/Rubberduck) проверки кода сказали бы: «Возвращаемое значение члена« ReadSystemTbl »никогда не назначается» –

+0

Это сделало трюк, спасибо! –

Смежные вопросы