87 votes

Comment puis-je vérifier si des arguments facultatifs sont fournis ou non ?

Comment puis-je tester si des arguments optionnels sont fournis ou non ? -- dans VB6 / VBA

Function func (Optional ByRef arg As Variant = Nothing)

    If arg Is Nothing Then   <----- run-time error 424 "object required"
        MsgBox "NOT SENT"
    End If

End Function 

113voto

Konrad Rudolph Points 231505

Utiliser IsMissing :

If IsMissing(arg) Then
    MsgBox "Parameter arg not passed"
End If

Cependant, si je me souviens bien, cela ne fonctionne pas lorsque je donne un paramètre par défaut pour l'argument, et en tout cas cela rend l'utilisation de l'argument par défaut plutôt redondante.

25voto

Florian Points 1903

Vous pouvez utiliser la fonction IsMissing(). Mais celui-ci ne fonctionne qu'avec le type de données Variant.

Sub func(Optional s As Variant)
   If IsMissing(s) Then
      ' ...
   End If
End Sub

10voto

OSUZorba Points 56

Si vous utilisez une variable de chaîne ou de nombre, vous pouvez vérifier la valeur de la variable. Par exemple :

Function func (Optional Str as String, Optional Num as Integer)

If Str = "" Then
    MsgBox "NOT SENT"
End If

If Num = 0 Then
    MsgBox "NOT SENT"
End If

End Function

Cela vous permet d'utiliser des variables non variables.

7voto

user7238479 Points 69

Vous pouvez utiliser quelque chose comme :

function func(optional vNum as integer:=&HFFFF) '&HFFFF value that is NEVER set on vNum

If vNum = &HFFFF Then
    MsgBox "NOT SENT"
End If

End Function

4voto

Selkie Points 479

La plupart d'entre eux se réfèrent au type de variante, ou testent si une valeur est vide.

Cependant, vous voulez parfois vérifier si une plage, un classeur, une feuille de calcul ou un autre type d'objet n'est pas passé, sans vérifier des choses comme les noms de feuilles.

Dans ce cas :

DesiredRange is Nothing

Renvoie un booléen. Par exemple :

    If DestinationRange Is Nothing Then
        MsgBox "Need a destination range when importing data"
    Else
        'We're happy
    End If

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X