2010-06-16 4 views
3

En Visual Basic, j'ai des fonctions avec beaucoup d'arguments facultatifs. Je voudrais être capable de passer juste quelques uns de ces arguments optionnels à une fonction sans devoir utiliser de nombreuses virgules et espaces pour arriver à ceux que je veux. Quelque part, j'ai vu un moyen de nommer les paramètres tels que OptVar:=val, mais cela ne semble pas fonctionner. Je me demandais simplement s'il y avait un moyen de le faire. Cela aiderait à la lisibilité.Désignation des paramètres facultatifs dans Visual Basic

Function foo(Optional val1 = 1, Optional val2 = 2, Optional val3 = 3) 
End Function 

Pour utiliser foo avec seulement la dernière arg nécessaire comme ceci:

fud = foo(, , 4) 

est un peu difficile à manier. Il serait préférable qu'une telle construction fonctionne:

fud = foo(val3:=4) 

Mais cela ne fonctionne pas.

+0

Il est plus facile de donner une réponse si vous fournissez du code que vous avez essayé. – systemovich

+0

Fonction foo (en option val1 = 1, en option val2 = 2, en option val3 = 3) ... End Function Pour utiliser foo avec seulement la dernière arg nécessaire comme ceci: FUD = foo (,, 4) est un peu impertinent. Ce serait mieux si une telle construction fonctionnait: fud = foo (val3: = 4). Mais ça ne marche pas. Ce serait génial si quelque chose comme ça fonctionne! Merci. – SteveNeedsSheetNames

+0

Il a été un moment, on dirait que personne ne peut trouver une solution pour cela. Merci d'avoir essayé. – SteveNeedsSheetNames

Répondre

4

Cela fait travailler:

Function foo(Optional val1 = 1, Optional val2 = 2, Optional val3 = 3) 
    MsgBox "val1: " & val1 & " val2: " & val2 & " val3: " & val3 
    foo = val3 
End Function 


Private Sub Form_Load() 
    MsgBox "foo returned: " & foo(val3:=4) 
End Sub 

Vous aurez en sortie une première messagebox disant "val1: 1 val2: 2 val3: 4" et une seconde avec foo retour: 4