2009-08-20 2 views
1

Очень простая проблема: у меня есть открытый Sub (в модуле), который я хочу вызвать из кнопки в форме. Имя функции, которую я хочу вызвать из модуля, - GenerateKML.Вызов публичного суба из формы в MS Access

Я прочитал этот пост:

How do I call a VBA Function into a Sub Procedure

И попробовал все из предложенных методов, ни один из которых работают для меня. Может возникнуть проблема с моим кодом, но когда я нахожусь в режиме просмотра кода (редактируя модуль) и нажимаю кнопку «играть», код работает правильно (создается файл KML).

Если я использую второй метод, предложенный (вызов подпрограммы в модуле из формы), я получаю сообщение об ошибке:

Compile Error

Прогнозный переменной или процедуры, не модуль

И если я использую третий метод (вызов подпрограммы из формы без использования процедуры обработки события) я получаю это:

Выражение On Click, введенное как свойство события ...: Введенное выражение имеет имя функции, которое [мое имя DB] не может найти.

Поэтому я подозреваю, что что-то не так с тем, как я называю код, который я хочу запустить.

Это, как начинается код моего модуля:

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

Может быть, вы назвали ваш код модулей такой же, как и процедуры внутри него. (просто мысль)

т. Е. Sub GenerateKML, находится в модуле, который вы назвали GenerateKML. Это создает конфликтное сообщение об ошибке &.

+0

Большое спасибо Lil'Monkey - это сделало это. –

3

Если вы назвали ваш модуль GenerateKML, а также ваш суб, вам нужно вызвать его с помощью:

GenerateKML.GenerateKML arguments 

(или просто переименовать один или другой, который, вероятно, легче)

+0

Спасибо, mavnn, вы были правы, переименование его сработало. –

2

попробовать переименование вашего модуля с помощью префикса мод: modGenerateKML. Вы не ссылаетесь на имя модуля из форм, просто имя вашего общего поднабора или функции.

+0

Спасибо, Бет! Так оно и было. –

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