Как я могу использовать необязательный аргумент массива в процедуре VBA? - PullRequest
8 голосов
/ 15 февраля 2010

У меня есть частная процедура в сценарии VBA для MS Access:

Private Sub drawLineDiagram(chartSpace As Variant, title As String, caption As String, x_val() As Variant, y_val() As Variant, Optional y_val2() As Variant = ????)

Как видите, я хочу иметь необязательный последний параметр для массива значений.

Какой параметр по умолчанию я должен назначить? Если я сделаю это с необязательным целочисленным значением и назначу его, например, 0 все нормально.

Если я сделаю это с массивом, как показано выше, и назначу массив, строка помечается красным => как ошибка (и она не скомпилируется)

Ответы [ 3 ]

11 голосов
/ 15 февраля 2010

Если вам нужен дополнительный массив в VBA, объявите его как Variant без спецификатора массива, но все равно получите доступ к нему как к массиву. Таким образом, вы получите Variant (одну переменную), которая содержит массив Variant с, а не просто массив Variant с. Значение по умолчанию не требуется:

Private Sub drawLineDiagram(chartSpace As Variant, title As String, caption As String, x_val As Variant, y_val As Variant, Optional y_val2 As Variant)

Для согласованности также объявите как простые Variant s два других параметра.

Если вы ненавидите IDE, не используйте ее. Используйте блокнот. Затем вставьте написанный код.

5 голосов
/ 15 февраля 2010

Возможно, вам нужен массив параметров:

В объявлении процедуры определите список параметров обычным способом. Все параметры, кроме последнего должен быть обязательным (не обязательно (Визуальный Basic)).

Предшествовать имени последнего параметра с ключевые слова ByVal ParamArray. это Параметр автоматически необязателен. Не включайте ключевое слово Optional.

- Как перегрузить процедуру, которая принимает неопределенное количество параметров (Visual Basic)

Справочник по VBA: Общие сведения о массивах параметров

1 голос
/ 15 февраля 2010

Среда может быть не очень полезна, но помощь (на этот раз) содержит ответ:
ParamArray
Необязательный. Используется только как последний аргумент в arglist, чтобы указать, что последний аргумент является необязательным массивом элементов Variant. Ключевое слово ParamArray позволяет указать произвольное количество аргументов. ParamArray нельзя использовать с ByVal, ByRef или Optional.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...