VBA Fonction des paramètres Optionnels

Je fais appel à une partie spécifique de code plusieurs fois donc je voudrais utiliser des paramètres facultatifs.
Je peux écrire quelque chose comme:

Public Sub main()

strA = "A"

'Calling the function
CalculateMe (strA)

End Sub

Public Sub CalculateMe(strA As String)

    Set rs = DB.OpenRecordset("tbl_A")
    rs.MoveFirst
        Do Until rs.EOF
            If rs.Fields(0) = strA Then
                dblA = rs.fields(2).Value
            End If
            rs.MoveNext
        Loop
End Sub

Comment puis-je changer la fonction de détenir plus de 1 paramètres facultatifs?

Quelque chose comme:

Public Sub main()
strA = "A"
strB = "B"

'Calling the function
CalculateMe (strA, strB)

more code
End Sub

Public Sub CalculateMe(Optional strA As String, Optional strB as String)

    Set rs = DB.OpenRecordset("tbl_A")
    rs.MoveFirst
        Do Until rs.EOF
            If rs.Fields(0).Value = strA And rs.Fields(1).Value = strB Then
                dblA = rs.Fields(2).Value
            End If
            rs.MoveNext
        Loop
End Sub

Suivantes Pankaj Jaju les conseils, j'ai réussi à l'exécuter en le modifiant pour:

Public Sub main()
strA = "A"
strB = "B"

'Calling the function
dblA = CalculateMe (strA, strB)

End Sub

Public Function CalculateMe(Optional ByVal strA As String, Optional ByVal strB as String)

Set rs = DB.OpenRecordset("tbl_A")
rs.MoveFirst
    Do Until rs.EOF
        If rs.Fields(0).Value = strA And rs.Fields(1).Value = strB Then
            dblA = rs.Fields(2).Value
        End If
        rs.MoveNext
    Loop
End Sub

Maintenant, comment puis-je effacer la valeur d'un paramètre facultatif? J'aurai besoin de cela pour certains calculs. Quelque chose comme:

Set strA = Nothing
Je sais que c'est une vieille question maintenant, mais êtes-vous essayer de passer un tableau? Puis la boucle par le biais de x éléments du tableau?
Non, je n'étais pas; seulement 2 variables de chaîne de caractères. Je n'étais pas familier avec la syntaxe à l'époque et Pankaj Jaju aider à résoudre cela. La modification de la fonction à une sous-routine et en ajoutant ByVal activé pour effectuer ce que j'essayais de faire. Ignorer tous les autres posts/commentaires; ils sont seulement la confusion.

OriginalL'auteur ProtoVB | 2015-02-27