Необязательные параметры VBA

Private Sub a()
   b 1,
End Sub

Private Sub b(p1 As Variant, Optional p2 As Variant)
   Stop
End Sub

Я использую VBA в Access. Я хочу иметь процедуру с двумя параметрами, последний из которых является необязательным. Почему не компилируется Private Sub a ().

Как мне запустить a () с вызовом b () и не передать параметр в качестве второго аргумента?


person Michael    schedule 16.03.2014    source источник
comment
просто b 1 без запятой   -  person Dmitry Pavliv    schedule 16.03.2014
comment
просто b 1 работает, но проблема в том, что предположим, что я хочу иметь три параметра, причем последние 2 являются необязательными, он всегда возвращает ошибку компиляции, если третий (последний) параметр отсутствует   -  person Michael    schedule 16.03.2014
comment
использовать именованные параметры: b p1:=1   -  person Dmitry Pavliv    schedule 16.03.2014
comment
Да ОК Спасибо, частный подпрограмм a () b p1: = 1, p2: = 1 End Sub Private Sub b (p1 как вариант, необязательный p2 как вариант, необязательный p3 как вариант) Stop End Sub p3 нигде не упоминается в подпрограмме a () и поэтому он отсутствует. Вместо b 1,1, спасибо   -  person Michael    schedule 16.03.2014


Ответы (1)


Конечный , нарушает правила синтаксиса, опустите его:

b 1

(Или укажите заполнитель b 1, p2:)

person Alex K.    schedule 16.03.2014
comment
Не могли бы вы показать коды sub a () и sub b () с отсутствующим последним параметром? Спасибо - person Michael; 16.03.2014