2017-03-02 2 views
0

Ich habe zwei Formulare, ein Anmeldeformular, um Benutzer zu authentifizieren, um das System und ein Hauptformular zu betreten, wenn die Authentifizierung erfolgreich ist. Ich arbeite mit einer Access-Datenbank, um nach den gültigen Benutzern zu suchen und auch Listen im Hauptformular zu füllen.Mein Excel-Benutzerformular reagiert nicht mehr beim nächsten Laden

The user form for authentication

Und hier ist der Code dafür:

Private Sub CancelCommandButton_Click() 
    CloseDatabase 
    Unload Me 
End Sub 

Private Sub ConfirmCommandButton_Click() 
    ... 

End Sub 

Private Sub UserForm_Initialize() 
    ConnectDatabase 
End Sub 

Private Sub OpenMainForm() 
    Unload Me 
    MainForm.Show 
End Sub 

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 
    If CloseMode = vbFormControlMenu Then 
     Cancel = True 
    End If 
End Sub 

Und hier ist der Code für Hauptformular Last-up Verwaltung und in der Nähe:

Public Sub UpdateControls() 
    PopulateUserList 
End Sub 

Private Sub UserForm_Activate() 
    sTag = Split(Me.Tag, "|") 

    If sTag(0) <> "1" Then 
     Me.MainFormMultiPage.Pages(0).Enabled = False 
     Me.MainFormMultiPage.Value = 1 
    Else 
     Me.MainFormMultiPage.Pages(0).Enabled = True 
     Me.MainFormMultiPage.Value = 0 
     UpdateControls 
    End If 

    UserLabel1.Caption = sTag(1) 
    UserLabel2.Caption = sTag(1) 
    UserLabel3.Caption = sTag(1) 
End Sub 

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 

    If CloseMode = vbFormControlMenu Then 
     ' Tip: If you want to prevent closing UserForm by Close (×) button  in the right-top corner of the UserForm, just uncomment the following line: 
     ' Cancel = True 

     Dim answer As Integer 
     answer = MsgBox("ÂíÇ ãØãÆäíÏ ˜å ãí ÎæÇåíÏ ÇÒ ÓÇãÇäå ÎÇÑÌ ÔæíÏ¿",  vbYesNo + vbQuestion, "ÎÑæÌ ÇÒ ÓÇãÇäå") 

     If answer = vbYes Then 
      CloseDatabase 
     Else 
      Cancel = True 
     End If 
    End If 

End Sub 

Private Sub UserForm_Terminate() 
    loginForm.Show 
End Sub 

Wenn ich die in der Nähe Hauptformular durch Klicken auf "X", das Login-Formular erscheint wieder und das Hauptformular ist geschlossen; Aber wenn ich mich wieder anmelde (am besten mit denselben Zugangsdaten), wird das Hauptformular angezeigt, aber es reagiert nicht mehr (keine Listenauffüllung, die Schaltfläche 'X' funktioniert nicht oder andere Steuerelemente im Formular).

Was soll ich tun? Löscht der Code in der UserForm_CloseQuery() das Hauptformular und alle seine Makros und ich kann nicht die erforderlichen Ereignisse zurück zu funktionieren oder fehlt mir etwas?

Es ist nicht eine Zeit, ich begann VBA zu programmieren und ich kann nicht den Kopf oder Schwanz davon leicht machen, wenn neue Probleme auftreten. Jede Hilfe wäre willkommen. Dank

Antwort

0

Ihre Formen sind modal Unter der Annahme, ändern Sie den Login-Formular-Code:

Private Sub OpenMainForm() 
    Me.Hide 
    MainForm.Show 
    Me.Show 
End Sub 

und entfernen Sie den Userform_Terminate Code aus dem Hauptformular. Das bedeutet, dass das Anmeldeformular automatisch angezeigt wird, wenn das Hauptformular geschlossen wird.

+0

Vielen Dank Rory, eigentlich habe ich einen Fehler und eine kleine Änderung ist erforderlich, und ich änderte auch Login-Formular initialisieren Ereignis zu aktivieren, jetzt funktioniert es ganz gut. –

Verwandte Themen