2010-02-15 28 views
7

J'ai une procédure privée dans un script VBA pour MS Access:Comment puis-je utiliser un argument tableau facultatif dans une procédure 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 = ????)

Comme vous le voyez, je veux avoir un dernier paramètre en option pour un tableau de valeurs.

Quel type de paramètre par défaut dois-je attribuer? Si je le fais avec une valeur entière optionnelle et l'assigner par ex. 0 tout va bien.

Si je le fais avec un tableau comme indiqué ci-dessus et que j'assigne un tableau, la ligne est marquée rouge => comme une erreur (et elle ne sera pas compilée).

Répondre

11

Si vous avez besoin d'un tableau facultatif dans VBA, déclarez-le comme Variant sans spécificateur de tableau, mais accédez-y en tant que tableau. De cette façon, vous obtenez un Variant (variable unique) qui contient un tableau de Variant s, par opposition à un tableau de Variant s. Aucune valeur par défaut est nécessaire:

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) 

Par souci de cohérence, également déclarer comme plaine Variant s les deux autres paramètres.

Si vous détestez l'IDE, ne l'utilisez pas. Utilisez le bloc-notes. Puis collez le code écrit.

+0

Voilà. rien à ajouter –

+0

Merci, je vais essayer. En fait, je ne déteste pas l'IDE, je me sens juste un grand écart de convivialité entre cet IDE et par exemple netbeans. Et le manque de convivialité, à mon avis, se traduit par moins d'efficacité. – Sebastian

+0

En effet, l'audience cible de VBA IDE est constituée de gestionnaires et d'autres personnes considérées comme intelligentes, mais qui ne sont peut-être pas des programmeurs. D'où les boîtes de message sur les erreurs de syntaxe et le manque de fonctionnalités avancées. Comparez à l'IDE de VS.NET qui est un surclassement définitif pour un gestionnaire. – GSerg

1

L'IDE peut-être pas d'une grande utilité, mais l'aide (pour une fois) contient la réponse:
ParamArray
en option. Utilisé uniquement comme dernier argument dans arglist pour indiquer que l'argument final est un tableau facultatif d'éléments Variant. Le mot-clé ParamArray vous permet de fournir un nombre arbitraire d'arguments. ParamArray ne peut pas être utilisé avec ByVal, ByRef ou Optional.

+0

Lorsqu'un flux de données (c'est-à-dire des points de graphique) se présente sous la forme d'un tableau, il n'est pas utile d'utiliser ParamArray. C'est un sucre syntaxique pour les êtres humains qui veulent lister leurs valeurs dans le code comme des littéraux et ne veulent pas déclarer une autre variable de tableau pour cela. – GSerg

5

Peut-être que vous voulez un tableau de paramètres:

Dans la déclaration de procédure, définir la liste des paramètres de la manière normale. Tous les paramètres sauf le dernier doivent être requis (non optionnel (Visual Basic)).

Faites précéder le dernier nom de paramètre avec des mots-clés ByVal ParamArray. Ce paramètre est automatiquement facultatif. N'incluez pas le mot-clé Optional.

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