2010-02-15 12 views
7

Tengo un procedimiento privado en un script de VBA de MS Access:¿Cómo puedo usar un argumento de matriz opcional en un procedimiento de 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 = ????)

Como se puede ver, yo quiero tener un último parámetro opcional para una matriz de valores.

¿Qué tipo de parámetro predeterminado debo asignar? Si lo hago con un valor entero opcional y lo asigno, p. 0 está todo bien.

Si lo hago con una matriz como se muestra arriba y asigno una matriz, la línea se marca rojo => como un error (y no se compilará).

Respuesta

11

Si necesita una matriz opcional en VBA, declare como Variant sin especificador de matriz, pero acceda a ella como una matriz de todos modos. De esta manera obtienes una Variant (variable única) que contiene una matriz de Variant s, en comparación con solo una matriz de Variant s. No se requiere un valor por defecto:

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) 

Por consistencia, también declaran como casquillos de Variant s los otros dos parámetros.

Si odias el IDE, no lo uses. Utilice el bloc de notas. Luego pega el código escrito.

+0

Eso es todo. nada para agregar –

+0

Gracias, lo intentaré. De hecho, no odio el IDE, solo siento una gran brecha de usabilidad entre este IDE y, por ejemplo, netbeans. Y la falta de usabilidad, en mi opinión, da como resultado una menor eficiencia. – Sebastian

+0

Esto se debe a que el público objetivo de VBA IDE son los gerentes y otras personas que se cree que son inteligentes pero que podrían no ser programadores. De ahí los cuadros de mensaje sobre errores de sintaxis y falta de características avanzadas. Compare con VS.NET IDE que es una exageración definitiva para un gerente. – GSerg

1

El IDE puede no ser de gran utilidad, pero la ayuda (por una vez) contiene la respuesta:
MatrizParam
opcional. Se usa solo como el último argumento en arglist para indicar que el argumento final es una matriz opcional de elementos Variant. La palabra clave ParamArray le permite proporcionar una cantidad arbitraria de argumentos. ParamArray no se puede usar con ByVal, ByRef u Opcional.

+0

Cuando una secuencia de datos (es decir, puntos de gráfico) viene como una matriz, no tiene sentido utilizar ParamArray. Es un azúcar sintáctico para seres humanos que desean listar sus valores en código como literales y no desean declarar otra variable de matriz para eso. – GSerg

5

Tal vez usted quiere una matriz de parámetros:

En la declaración del procedimiento, definir la lista de parámetros de la forma habitual. Se deben requerir todos los parámetros excepto el último (no opcional (Visual Basic)).

Antecede el último nombre del parámetro con las palabras clave ByVal ParamArray. Este parámetro es automáticamente opcional. No incluya la palabra clave Optional.

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

Cuestiones relacionadas