2010-02-15 4 views
7

Ho un procedimento privato in uno script VBA di MS Access:Come posso utilizzare un argomento array opzionale in una procedura 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 = ????)

Come vedete, voglio avere un ultimo parametro opzionale per una serie di valori.

Che tipo di parametro predefinito devo assegnare? Se lo faccio con un valore intero opzionale e lo assegno ad es. 0 va tutto bene.

Se lo faccio con un array come mostrato sopra e assegna un array, la linea è contrassegnata in rosso => ​​come errore (e non verrà compilata).

risposta

11

Se è necessario un array opzionale in VBA, dichiararlo come Variant senza specificatore di array, ma accedervi come un array in ogni caso. In questo modo si ottiene un Variant (variabile singola) che contiene un array di Variant s, invece di un semplice array di Variant s. Non è richiesto alcun valore di default:

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) 

Per coerenza, dichiara anche come semplici Variant s gli altri due parametri.

Se si odia l'IDE, non utilizzarlo. Usa il blocco note. Quindi incollare il codice scritto.

+0

Questo è tutto. niente da aggiungere –

+0

Grazie, ci proverò. In realtà non odio l'IDE, sento solo un grande divario di usabilità tra questo IDE e ad esempio netbeans. E la mancanza di usabilità, secondo me, si traduce in una minore efficienza. – Sebastian

+0

Questo perché il pubblico di riferimento per VBA IDE è manager e altre persone che si ritiene siano intelligenti ma potrebbero non essere programmatori. Quindi le caselle di messaggio sugli errori di sintassi e la mancanza di funzionalità avanzate. Confronta con VS.NET IDE che è un vero e proprio overkill per un manager. – GSerg

1

L'IDE potrebbe non essere di grande utilità, ma l'aiuto (per una volta) contiene la risposta:
ParamArray
opzionale. Usato solo come ultimo argomento in arglist per indicare che l'argomento finale è un array facoltativo di elementi Variant. La parola chiave ParamArray consente di fornire un numero arbitrario di argomenti. ParamArray non può essere utilizzato con ByVal, ByRef o Optional.

+0

Quando un flusso di dati (ad esempio punti del grafico) viene fornito come array, non rende necessario utilizzare ParamArray. È uno zucchero sintattico per gli esseri umani che vogliono elencare i loro valori in codice come letterali e non vogliono dichiarare un'altra variabile di matrice per quello. – GSerg

5

Forse si vuole una matrice di parametri:

Nella dichiarazione procedimento, definire l'elenco dei parametri in modo normale. Devono essere richiesti tutti i parametri tranne l'ultimo (non opzionale (Visual Basic)).

Precedere l'ultimo nome del parametro con le parole chiave ByVal ParamArray. Questo parametro è automaticamente facoltativo. Non includere la parola chiave opzionale.

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

Problemi correlati