Twijfel over opzet

Status
Niet open voor verdere reacties.

masala09

Gebruiker
Lid geworden
6 aug 2012
Berichten
886
Beste allen,

Ik twijfel aan onderstaande code. Hoewel deze werkt, vraag ik mij af of dit gezien het gebruik van Select Case en If Then Else door elkaar wel duidelijk is.

Code:
            Select Case GebruikerOk
                Case Is = False
                    MsgBox ("U heeft een ongeldig gebruikersnaam ingevoerd." _
                        & vbNewLine & vbNewLine & "Probeer opnieuw"), vbInformation
                Case Is = True
                    If Not WachtwoordOk Then MsgBox ("U heeft een ongeldig wachtwoord ingevoerd." _
                            & vbNewLine & vbNewLine & "Probeer opnieuw."), vbInformation
            End Select

Of kan ik beter het volgende gebruiken?

Code:
            Select Case GebruikerOk
                Case Is = False
                    MsgBox ("U heeft een ongeldig gebruikersnaam ingevoerd." _
                        & vbNewLine & vbNewLine & "Probeer opnieuw"), vbInformation
                Case Is = True
                    Select Case WachtwoordOk
                        Case = False
                            MsgBox ("U heeft een ongeldig wachtwoord ingevoerd." _
                            & vbNewLine & vbNewLine & "Probeer opnieuw."), vbInformation
                    End Select
            End Select

Ik weet ik draai hier al een tijdje mee, maar toch heb ik soms twijfels in opzet.

Alvast bedankt voor de reacties.
 
Select Case is hier overbodig. Gebruik dit:
Code:
    If Not GebruikerOk Then
        MsgBox ("U heeft een ongeldige gebruikersnaam ingevoerd." _
                & vbNewLine & vbNewLine & "Probeer opnieuw"), vbInformation
    Else
        If Not WachtwoordOk Then
            MsgBox ("U heeft een ongeldig wachtwoord ingevoerd." _
                & vbNewLine & vbNewLine & "Probeer opnieuw."), vbInformation
        End If
    End If

Alhoewel ik zelf de hele constructie overbodig vind. Het melden dat de ingevoerde gegevens onjuist zijn is voldoende. Je geeft zo alleen maar aanwijzingen wat er niet juist is. Uit oogpunt van veiligheid is dat ongewenst.

Dit zou dus voldoende zijn:
Code:
    If Not GebruikerOk Or Not WachtwoordOk Then
        MsgBox ("U heeft ongeldige gegevens ingevoerd." _
                & vbNewLine & vbNewLine & "Probeer opnieuw"), vbInformation
    End If
 
Laatst bewerkt:
Avond Edmoor.

Dus toch mijn eerste gedachte en opzet. Dit had ik dus veranderd volgens opzet in #1 waarna ik ben gaan twijfelen tussen beide.

Wanneer raad jij select case dan wel aan?
 
Een Select Case is alleen nodig wanneer er meer dan 2 mogelijkheden zijn die gecontroleerd moeten worden. In het geval van een Boolean zijn er altijd maar 2, True of False. Dus respectievelijk, If of If Not.
 
Laatst bewerkt:
Oke dank je wel. Dat maakt mijn denkwijze weer wat ruimer. Ik dacht i.v.m. de duidelijkheid, maar inderdaad met een Boolean is er enkel waar of niet waar.
 
Dat hoeft je er overigens niet van te weerhouden om binnen een Select Case een If Then End If of zelfs weer een Select Case te gebruiken.
 
Toch nog even een andere vraag.

Code:
    Sheets("LogFile").Cells(Rows.Count, 1).End(xlUp).Offset(, 6) = Now '

of

Code:
    Sheets("LogFile").Cells(Rows.Count, 1).End(xlUp).Cells(, 7) = Now

Beide werken, maar ook hier denk ik meer aan de eerste.
Met deze code is het de bedoeling dat in het genoemd blad de onderste ingevulde rij wordt gezocht en van deze rij de cel in kolom 7 van een waarde te voorzien.
 
Dat maakt in dit geval niks uit. Al ben ik zelf geen fan van het gebruik van .Offset
 
Dat hoeft je er overigens niet van te weerhouden om binnen een Select Case een If Then End If of zelfs weer een Select Case te gebruiken.

Nee oke, maar dat weerhield mij toch al niet. Het ging mij er enkel om of het wel duidelijk was. Jij geeft aan dat het overbodig is. Dus onduidelijk was deze dus niet. Wel heb ik hem weer terug aangepast naar hoe ik hem in eerste had. Dus de wijze van jou.
 
Bij het gebruik van de .Offset ben je altijd afhankelijk van de huidige positie. Het is dus relatief positioneren waar ik het liever exact doe. Maar dat is puur persoonlijk.
 
Ik denk dat ik je wel begrijp. Echter mijn begin is in kolom A en dan pas tel ik naar rechts. Dus de exacte positionering is volgens mij bij mij van te voren al gegeven.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan