• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Combobox en textbox leeg geeft fout bij starten macro

Status
Niet open voor verdere reacties.

samabert

Gebruiker
Lid geworden
27 mrt 2010
Berichten
301
Goedenavond,

Probleem met Userform (frmPW):

Indien zowel de combobox als de textbox (Username en password) leeg worden gelaten en je start dan via de command button Validate de macro krijg je volgende fout:
Object variable or With block variable not set.
Via debug: If cl.Offset(0, 1).Value <> Me.tbxPW.Text Then

Code:
Sub validatePW()
' On Error GoTo err_handler

    If Me.cboUser.Value = "Manager" And Me.tbxPW = Sheet1.Cells(2, 1).Value Then
        Me.cmdManage.Visible = True
        Exit Sub
    End If
    
   
    
    Select Case iCounta
    Case 1, 2, 3, 4
        With Sheet1
            Set rng = .Range(.Cells(6, 1), .Cells(.Rows.Count, 1).End(xlUp))
            Set cl = rng.Find(sUser, LookIn:=xlValues)
    '====
            Call ToevoegenActie(True, sUser) 'dit voegt nu al bij het sluiten van het  werkboek in tab Logboek-Time "gesloten Admin toe"
    '====
        End With
        If cl.Offset(0, 1).Value <> Me.tbxPW.Text Then
            sMsg = "You have entered an incorrect Password" _
                   & vbNewLine & "Try again" & vbNewLine & _
                   "You have " & iCounta & " goes left"
            MsgBox sMsg, sStyle, sTitle
            With Me
                .cboUser.Value = vbNullString
                .tbxPW = vbNullString
                .cboUser.SetFocus
                
   
                Exit Sub
            End With
        ElseIf cl.Offset(0, 1).Value = Me.tbxPW.Text Then
            iLevel = cl.Offset(0, 2).Value
            MsgBox "Correct Information Entered.  Please Proceed.", vbOKOnly + _
                                                                    vbInformation, "Correct Information entered."
            
            Me.cmdNew.Visible = True
            bOK = True
            
            Select Case iLevel
            Case 1
                For Each ws In ThisWorkbook.Sheets
                    Select Case ws.Name
                    Case "Dept1"
                        ws.Visible = xlSheetVisible
                    Case Else
                        On Error Resume Next
                        ws.Visible = xlSheetVeryHidden
                        On Error GoTo 0
                    End Select
                Next
            Case 2
                For Each ws In ThisWorkbook.Sheets
                    Select Case ws.Name
                    Case "Dept2", "Dept3"
                        ws.Visible = xlSheetVisible
                    Case Else
                        On Error Resume Next
                        ws.Visible = xlSheetVeryHidden
                        On Error GoTo 0
                    End Select
                Next
            Case 3
                For Each ws In ThisWorkbook.Sheets
                    Select Case ws.Name
                    Case "JAN", "FEB", "MRT", "APR", "MEI", "JUN", "JUL", "AUG", "SEP", "OKT", "NOV", "DEC", "Logboek-Time", "Hide this sheet"
                        ws.Visible = xlSheetVisible
                        
                    Case Else
                        On Error Resume Next
                        ws.Visible = xlSheetVeryHidden
                        
                        On Error GoTo 0
                    End Select
                Next
               Case 4
                For Each ws In ThisWorkbook.Sheets
                    Select Case ws.Name
                    Case "JAN", "FEB", "MRT", "APR"
                        ws.Visible = xlSheetVisible
                    Case Else
                        On Error Resume Next
                        ws.Visible = xlSheetVeryHidden
                        On Error GoTo 0
                    End Select
                Next
                End Select
               
             'Unload Me 'nodig als je gedeelte password aanpassen niet wil zien
        End If
        Sheets("Splash").Visible = xlVeryHidden

    Case 0
        MsgBox "You have tried three time incorrectly. WorkBook will now close" _
               , vbOKOnly + vbExclamation, "Warning"
        bOK = True
        'Unload Me
err_handler:
        'this line should be used in the final version
                    Application.Quit
                    ActiveWorkbook.Close SaveChanges:=False    'close without saving
    End Select

End Sub

Kan deze fout opgevangen worden, eventueel met de knop validate pas zichtbaar te maken na een keuze te hebben gemaakt in username?
Graag jullie hulp.

Alvast bedankt.

Mvg.
Marc
 

Bijlagen

  • Test_fd -HSV.xlsb
    63 KB · Weergaven: 34
Doe dat hier:
Code:
Set cl = rng.Find(sUser, LookIn:=xlValues) [COLOR="#008000"]'<- Deze regel heb je al[/COLOR]
If cl Is Nothing Then Exit Sub [COLOR="#008000"]'<- Nieuw[/COLOR]
 
Laatst bewerkt:
Het blauwe gedeelte toegevoegd.

Even kort door de bocht.
Als de combobox leeg is sluit het bestand.
Misschien kun je daar anders wat voor in de plaats bedenken.
Code:
Private Sub cmdValidatePW_Click()
    
    sUser = Me.cboUser.Value
    sPW = Me.tbxPW.Text
    iCounta = iCounta - 1
[COLOR=#0000ff] If cboUser.ListIndex > -1 Then[/COLOR]
[COLOR=#0000ff]    validatePW[/COLOR]
[COLOR=#0000ff]   Else[/COLOR]
[COLOR=#0000ff] ThisWorkbook.Close[/COLOR]
[COLOR=#0000ff] End If[/COLOR]
   
End Sub
 
Allebei bedankt voor de wel zeer snelle oplossingen!

@ edmoor mijn voorkeur gaat uit naar jouw oplossing omdat hierbij het bestand niet gesloten wordt en je de fout direct kan rechtzetten, lees verder werken.

@ HSV, jouw oplossing is ook goed maar als ik deze test heb je het volgende:
Als iemand het probleem wil herhalen zonder een username te kiezen, komt het woord gesloten telkens achter de laatst effectieve ingelogde, omdat het bestand sluit natuurlijk. Verder kan ik zo niets bedenken wat je hier nog zou kunnen tussenplakken zoals je voorstelde.

Bedankt voor jullie hulp.

Mvg.
Marc
 
Het kan natuurlijk ook gewoon zo, maar als je tevreden bent met de aangedragen oplossing van @edmoor ben ik niet degene die daar tegenin gaat hoor.
Ik heb die van @edmoor niet getest, en kan daar dus niet over oordelen.

Gewoon doen wat het beste is.
Code:
Private Sub cmdValidatePW_Click()
    
    sUser = Me.cboUser.Value
    sPW = Me.tbxPW.Text
    iCounta = iCounta - 1
[COLOR=#0000ff] If cboUser.ListIndex > -1 Then validatePW[/COLOR]
   
End Sub
 
Harry,

Tof dat jij nog een andere oplossing aanbiedt, ga die sowieso morgen ook eens testen.
Het werkt nu wel, maar ik ben te nieuwsgierig.:d

Mvg.
Marc
 
@ HSV

Ondertussen jouw laatste oplossing getest. Als ik het inloggen van manager mee in de lijst van users opneem werkt je voorbeeld.
Bij een gewone login komen de gegevens in de tabel te staan, maar bij inloggen als manager komt deze niet in de tabel te staan.
Ik apprecieer jouw bijdrage enorm, maar ik hou het bij de oplossing van edmoor.

Mvg.
Marc
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan