2010-02-15 4 views
7

У меня есть собственная процедура в сценарии VBA для MS Access:Как использовать необязательный аргумент массива в процедуре VBA?

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 все нормально.

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

ответ

11

Если вам нужен дополнительный массив в VBA, объявите его как Variant без спецификатора массива, но в любом случае получите его как массив. Таким образом вы получаете Variant (единственная переменная), которая содержит массив Variant s, в отличие от всего массива 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 з двух других параметров.

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

+0

Вот так. ничего не добавить –

+0

Спасибо, я попробую. На самом деле я не ненавижу IDE, я просто чувствую большой пробел в юзабилити между этой IDE и, например, netbeans. И отсутствие удобства использования, на мой взгляд, приводит к меньшей эффективности. – Sebastian

+0

Это потому, что целевая аудитория для VBA IDE - это менеджеры и другие люди, которые считаются умными, но могут не быть программистами. Следовательно, окна сообщений об ошибках синтаксиса и отсутствие расширенных функций. Сравните с VS.NET IDE, что является определенным излишеством для менеджера. – GSerg

1

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

+0

Когда поток данных (т. Е. Точки диаграммы) поступает как массив, он не использует параметр ParamArray. Это синтаксический сахар для людей, которые хотят перечислить свои ценности в коде как литералы и не хотят объявлять для этого другую переменную массива. – GSerg

5

Может быть, вы хотите параметрический массив:

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

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

- How to: Define a Procedure with an Indefinite Number of Parameters

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

  • Нет связанных вопросов^_^