2011-02-07 2 views
2

Я представляю, что это просто. У меня есть следующие объявления:MS Access VBA: необязательный аргумент не предполагает значения по умолчанию

Public Const TABLE_MY_TABLE As String = "my_table" 

Sub reloadProjections(startDate As String, endDate As String, _ 
         Optional tableName As String = TABLE_MY_TABLE) 

    'Processing occurs here 

End Sub 

По какой-то причине, когда дополнительный аргумент не входит в комплект, TABLENAME не принимает значение по умолчанию TABLE_MY_TABLE. Когда вы проходите это с помощью отладчика, TABLE_MY_TABLE устанавливается в «my_table», а tableName - пустая строка. Кто-нибудь знает, почему?

ответ

1

Это работает для меня. Как вы это называете? Попробуйте, скажем:

reloadProjections date(),date() 
+0

Хорошее горе - я чувствую себя глупым! :) Да, отлично работает. Я смотрел на неправильный патрон кода. Он передавал аргумент (не используя значение по умолчанию, как я предполагал), и я ошибся в имени аргумента, поэтому он передавал пустую строку. Радости свободно-типизированного языка. Спасибо, что указал мне в правильном направлении. – Adam

+5

Э-э, что? Неверно напечатан? Если вы включили OPTION EXPLICIT, вы не сможете скомпилировать код с именами с ошибками. Это исправление доступа - вы также используете OPTION EXPLICIT во всех своих модулях. –

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