Public Function pass(Optional intLength As Integer = 8, Optional boolIncUpper As Boolean = False, Optional boolIncSign As Boolean = False)

    Dim strPass As String
    Dim strLower As String
    Dim strUpper As String
    Dim strNumber As String
    Dim strSign As String
    Dim strChars As String
    Dim intMax As Integer
    Dim i As Integer
   
    strLower = "qwertyuiopasdfghjklzxcvbnm"
    strUpper = "QWERTYUIOPASDFGHJKLZXCVBNM"
    strNumber = "123456789"
    strSign = "-^@[;:],./!""#$%&'()=~|`{+*}<>?_"

    strChars = strLower & strNumber

    If boolIncUpper = True Then
   
        strChars = strChars & strUpper
   
    End If
   
    If boolIncSign = True Then
   
        strChars = strChars & strSign
       
    End If

    intMax = Len(strChars)
   
    For i = 1 To intLength
   
        strPass = Mid(strChars, Int((intMax - 1 + 1) * Rnd + 1), 1) & strPass
   
    Next i

    pass = strPass

End Function