Microsoft Excel

Herbers Excel/VBA-Archiv

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

VBA end if | Herbers Excel-Forum


Betrifft: VBA end if von: Frank Hering
Geschrieben am: 18.01.2012 14:41:55

Hallo Zusammen,

ich sehe irgendwie vor lauter Code die Lösung nicht mehr.

Ich habe ein Excelsheet mit dem Name Daten
Über eine Userform beim Öffen der Datei erkenne ich wer von 3 möglichen Benutzern sich anmeldet.

In der Tabelle Daten pflege ich wie folgt
User Passwort Angemeldet durch eingabe eines X in
MA Zelle P3 Zelle R2
AL Zelle P103 Zelle R3
SV Zelle P203 Zelle R4

Nun möchte ich dem jeweils angemeldeten User die Möglichkeit geben sein Passwort zu ändern hierzu möchte hierzu eine UserForm mit 3 Textboxen (1x altes Passwort und 2x neues Passwort) mit folgendes Makro verwenden. Leider bekomme ich den hiweis das ein End if fehlt.

Danke für eure Hilfe




Private Sub CommandButton1_Click()
'Makro zur Passwortänderung
'Old Password
OPW = TextBox1.Value
'New Password (1=first entry, 2= repeat entry)
NPW1 = TextBox2.Value
NPW2 = TextBox3.Value

'User 1
    ' Prüfung ob angemeldet
    If Worksheets("Daten").Range("R2") <> "X" Then
    GoTo U2
    Else
    End If
   
    ' Prüfung Übereinstimmung des hinterlegten mit dem Eingegebenen alten Passworts
    If OPW <> Worksheets("Daten").Range("P3") Then
    MsgBox ("Das alte Passwort ist inkorrekt!")
    TextBox1 = ""
    TextBox2 = ""
    TextBox3 = ""
    GoTo PWCEnd
    Else
    
    'Prüfung ob ein neues Passwort eingegeben wurde
    If NPW1 = "" Then
    MsgBox ("Bitte ein neues Passwort eingeben!")
    GoTo PWCEnd
    Else
            
    'Prüfung Übereinstimmung der neuen Passwörter
    If NPW1 <> NPW2 Then
    MsgBox ("Die neuen Passwörter stimmen nicht überein!")
    TextBox2 = ""
    TextBox3 = ""
    GoTo PWCEnd
    Else

    'Übertrag des neuen Passworts
    Worksheets("Daten").Range("P3") = NPW2
    Unload Me
    UserForm1.Show
    GoTo PWCtEN

'User 2
U2:
    ' Prüfung ob angemeldet
    If Worksheets("Daten").Range("R4") <> "X" Then
    GoTo U3
    Else
    End If
        
    If OPW <> Worksheets("Daten").Range("P203") Then
    MsgBox ("Das alte Passwort ist inkorrekt!")
    TextBox1 = ""
    TextBox2 = ""
    TextBox3 = ""
    GoTo PWCEnd
    Else
    
    If NPW1 = "" Then
    MsgBox ("Bitte ein neues Passwort eingeben!")
    GoTo PWCEnd
    Else
            
    If NPW1 <> NPW2 Then
    MsgBox ("Die neuen Passwörter stimmen nicht überein!")
    TextBox2 = ""
    TextBox3 = ""
    GoTo PWCEnd
    Else

    Worksheets("Daten").Range("P203") = NPW2
    Unload Me
    UserForm1.Show
    GoTo PWCtEN
                    
U3:
    If Worksheets("Daten").Range("R4") <> "X" Then
    GoTo PWCERR
    Else
    End If
        
    If OPW <> Worksheets("Daten").Range("P203") Then
    MsgBox ("Das alte Passwort ist inkorrekt!")
    TextBox1 = ""
    TextBox2 = ""
    TextBox3 = ""
    GoTo PWCEnd
    Else
    
    If NPW1 = "" Then
    MsgBox ("Bitte ein neues Passwort eingeben!")
    GoTo PWCEnd
    Else
                
    If NPW1 <> NPW2 Then
    MsgBox ("Die neuen Passwörter stimmen nicht überein!")
    TextBox2 = ""
    TextBox3 = ""
    GoTo PWCEnd
    Else

    Worksheets("Daten").Range("P203") = NPW2
    Unload Me
    UserForm1.Show
    GoTo PWCtEN
    
PWCERR:
MsgBox ("Bitte umgehend die IT benachrichtigen. Es liegt ein Benutzerfehler vor.")
   
PWCEnd:
End If

PWCtEN:
End Sub

  

Betrifft: AW: VBA end if von: Rudi Maintaire
Geschrieben am: 18.01.2012 15:11:34

Hallo,
du hinterlegst tatsächlich Passwörter in einer Tabelle? Dann kannst du sie auch gleich ans schwarze Brett hängen.

Private Sub CommandButton1_Click()
  'Makro zur Passwortänderung
  'Old Password
  Dim OPW As String, NPW1 As String, NPW2 As String, iUser As Integer
  OPW = TextBox1.Value
  'New Password (1=first entry, 2= repeat entry)
  NPW1 = TextBox2.Value
  NPW2 = TextBox3.Value
  
  ' welcher User?
  iUser = Application.Match("X", Worksheets("Daten").Range("R2:R4"), 0) - 1
  
  ' Prüfung Übereinstimmung des hinterlegten mit dem Eingegebenen alten Passworts
  If OPW <> Worksheets("Daten").Cells(iUser * 100 + 3, 16) Then
    MsgBox ("Das alte Passwort ist inkorrekt!")
    TextBox1 = ""
    TextBox2 = ""
    TextBox3 = ""
    Exit Sub
  End If
  
  'Prüfung ob ein neues Passwort eingegeben wurde
  If NPW1 = "" Then
    MsgBox ("Bitte ein neues Passwort eingeben!")
    Exit Sub
  End If
  
  'Prüfung Übereinstimmung der neuen Passwörter
  If NPW1 <> NPW2 Then
    MsgBox ("Die neuen Passwörter stimmen nicht überein!")
    TextBox2 = ""
    TextBox3 = ""
    Exit Sub
  End If
  
  'Übertrag des neuen Passworts
  Worksheets("Daten").Cells(iUser * 100 + 3, 16) = NPW2
  Unload Me
  UserForm1.Show
End Sub

Gruß
Rudi


  

Betrifft: AW: VBA end if von: Frank Hering
Geschrieben am: 18.01.2012 16:06:24

Danke jetzt funktioniert es.

Ja die Sicherheit ist bei dieser Lösung eher suboptimal. Werde mir mal noch eine anderen Lösung überlegen müssen. :-)

Gruß

Frank