Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Überprüfung eines Ergebnisses auf div. Bedingungen

Betrifft: Überprüfung eines Ergebnisses auf div. Bedingungen von: Bernd Holzhauer
Geschrieben am: 29.07.2014 10:01:30

Hallo zusammen,

bin heute echt zu blöd für alles.

Ganz einfacher Fall ich generiere ein PW mit

Sub Test()
    MsgBox Pwd(10)
End Sub

Function Pwd(iLength As Integer) As String
    Dim i As Integer, iTemp As Integer, bOK As Boolean, cOK As Boolean, strTemp As String
    '33 - 47 = Sonderzeichen, 48-57 = 0 To 9, 65-90 = A To Z, 97-122 = a To z
    For i = 1 To iLength 'Passwortlänge
        Do
            iTemp = Int((122 - 33 + 1) * Rnd + 33)
            Select Case iTemp
            Case 33 To 47, 48 To 57, 65 To 90, 97 To 122: bOK = True
            Case Else: bOK = False
            End Select
        Loop Until bOK = True
        bOK = False
        strTemp = strTemp & Chr(iTemp)
    Next i
    
    Pwd = strTemp
End Function
am Ende will ich prüfen ob alle 4 Kriterien wie Gross- und Kleinbuchstaben, Zahlen und Sonderzeichen im PW vorkommen nur wie ?????

hab schon div. CASE Varianten durch ;(

p.s. ist nicht im Excel sondern Outlook VBA

Gruß Bernd

  

Betrifft: AW: Überprüfung eines Ergebnisses auf div. Bedingungen von: ChrisL
Geschrieben am: 29.07.2014 10:14:17

Hi Bernd

Warum das Rad neu erfinden ;)

http://www.access-paradies.de/news/tipp_juni_2003_1.php

cu
Chris


  

Betrifft: AW: Überprüfung eines Ergebnisses auf div. Bedingungen von: Bernd Holzhauer
Geschrieben am: 29.07.2014 10:52:49

ein Träumchen ;)

geht gut und schnell auf Outlook angepasst


  

Betrifft: Traum oder Albtraum? von: EtoPHG
Geschrieben am: 29.07.2014 10:58:56

Hallo Bernd,

Bei dem Vorschlag ist a) nicht sichergestellt, dass alle 4 Bedingungen erfüllt werden (wie von dir gefordert!) und b) ebenfalls eine fehlende Überprüfung auf eine Minimumlänge der Passworts.

Gruess Hansueli


  

Betrifft: Überprüfung eines Ergebnisses auf div. Bedingungen von: Nepumuk
Geschrieben am: 29.07.2014 10:25:12

Hallo,

so vielleicht?

Private Function Pwd(iLength As Long) As String
    
    Dim i As Long, iTemp As Long, bOK As Boolean, cOK As Boolean, strTemp As String
    Dim lngCheck As Long
    
    '33 - 47 = Sonderzeichen, 48-57 = 0 To 9, 65-90 = A To Z, 97-122 = a To z
    
    Randomize
    
    Do
        strTemp = vbNullString
        lngCheck = 0
        For i = 1 To iLength 'Passwortlänge
            Do
                iTemp = Int((122 - 33 + 1) * Rnd + 33)
                Select Case iTemp
                    Case 33 To 47
                        bOK = True
                        lngCheck = lngCheck Or 1
                    Case 48 To 57
                        bOK = True
                        lngCheck = lngCheck Or 2
                    Case 65 To 90
                        bOK = True
                        lngCheck = lngCheck Or 4
                    Case 97 To 122
                        bOK = True
                        lngCheck = lngCheck Or 8
                    Case Else
                        bOK = False
                End Select
            Loop Until bOK
            strTemp = strTemp & Chr$(iTemp)
        Next i
    Loop Until lngCheck = 15
    Pwd = strTemp
End Function

Gruß
Nepumuk


  

Betrifft: AW: Überprüfung eines Ergebnisses auf div. Bedingungen von: Rudi Maintaire
Geschrieben am: 29.07.2014 10:29:01

Hallo,

Sub Test()
  Dim myPwd
  Do
    myPwd = Pwd(10)
  Loop Until CheckPwd(myPwd)
    MsgBox myPwd
End Sub

Function Pwd(iLength As Integer) As String
    Dim i As Integer, iTemp As Integer, bOK As Boolean, cOK As Boolean, strTemp As String
    '33 - 47 = Sonderzeichen, 48-57 = 0 To 9, 65-90 = A To Z, 97-122 = a To z
    For i = 1 To iLength 'Passwortlänge
        Do
            iTemp = Int((122 - 33 + 1) * Rnd + 33)
            Select Case iTemp
            Case 33 To 47, 48 To 57, 65 To 90, 97 To 122: bOK = True
            Case Else: bOK = False
            End Select
        Loop Until bOK = True
        bOK = False
        strTemp = strTemp & Chr(iTemp)
    Next i
    Pwd = strTemp
End Function

Function CheckPwd(ByVal strPwd As String)
  Dim bNum As Boolean, bGross As Boolean, bKlein As Boolean, bSonder As Boolean
  Dim i As Integer
  For i = 1 To Len(strPwd)
    Select Case Asc(Mid(strPwd, i, 1))
      Case 65 To 90: bGross = True
      Case 97 To 122: bKlein = True
      Case 48 To 57: bNum = True
      Case Else: bSonder = True
    End Select
  Next
  CheckPwd = bNum And bKlein And bGross And bSonder
End Function

Gruß
Rudi


  

Betrifft: Prüfung auf minimum 4 Läge... von: EtoPHG
Geschrieben am: 29.07.2014 10:51:58

Hallo Bernd,

Ich würde Nepumuk's Vorschlag implentieren, denn der sorgt gleich bei der Generierung dafür, dass alle 4 Bedingungen erfüllt werden. Allerdings müsste noch ein Abbruch in die Function, damit sie bei einem Call mit einer Länge < 4 nicht in einen endlosen Loop läuft.

Gruess Hansueli


 

Beiträge aus den Excel-Beispielen zum Thema "Überprüfung eines Ergebnisses auf div. Bedingungen"