• 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.

Verrekt lastig Engelse les met Nederlandse Excel

Status
Niet open voor verdere reacties.

Atwist

Terugkerende gebruiker
Lid geworden
24 jan 2006
Berichten
1.055
Besturingssysteem
Wndows 10
Office versie
2016
Het is toch wel verrekte lastig om een Excel in het Nederlands en dan een Engelse Excel les volgen.

Code:
Sub CheckUser()
Dim UserRow, SheetCol As Long
Dim SheetNm As String
With [COLOR="#FF0000"]Sheet8[/COLOR]
.Calculate

Dit stukje heb tig maal gecontroleerd, is gelijk aan het voorbeeld in de les maar krijg een fout melding "Variabel niet gedefinieerd".
Staar mij blind en pieker mij suf en geprobeerd met vriend Google maar nog niets wijzer.

Dus kom ik maar weer hier om te vragen wat de fout is (loopt vast op de rode tekst)
 
Aan zo'n stukje code is uiteraard zonder het bijbehorende document niks te zien.
Heb je wel een sheet8?
Heb je Option Explicit aan staan?
 
Misschien moet het dit zijn:
Code:
...With Sheets("Sheet8")...
 
Inderdaad dat is het daar staar gewoon op blind.:thumb:

Dan ga ik maar eens kijken of ik een Engelse versie kan opduiken van Excel.
Met de formules in de cellen loop ik ook steeds vast en moet de Excel formule vertaler er weer bij nemen.
 
En als je dan toch aan het leren bent, leer dan direct om ook de juiste inspringpunten te gebruiken:
Code:
Sub CheckUser()
    Dim UserRow, SheetCol As Long
    Dim SheetNm As String
    With Blad8
        .Calculate
        If .Range("T8").Value = Empty Then [COLOR="#008000"]'fout login naam[/COLOR]
            MsgBox " Gebruikersnaam is verkeerd"
            Exit Sub
        End If
        
        If .Range("T7").Value <> True Then [COLOR="#008000"]' fout wachtwoord[/COLOR]
            MsgBox " Wachtwoord verkeerd"
            Exit Sub
        End If
    End With
End Sub

Daarnaast, dit:
Dim UserRow, SheetCol As Long
zorgt er niet voor dat beide variabelen van het type Long zijn.

Ook maakt het voor VBA niet uit of je Excel in het Engels of het Nederlands hebt.
 
Laatst bewerkt:
Code:
Ook maakt het voor VBA niet uit of je Excel in het Engels of het Nederlands hebt.

Inderdaad voor VBA niet maar wel voor de werkblad formules
 
Ik zou afzien van al die overbodige deklaraties.
Dan leer je waar het bij VBA om gaat veel sneller.
 
@edmoor, je hebt gelijk, maar dat voorbeeld maakt het ook niet makkelijk door inconsequent gebruik te maken van style :p

gebruik van quotes

Code:
.range("t8")
maar niet
with "blad8"

gebruik van short form:

Code:
with blad8  ipv with sheets("blad8")
maar wel
range("t8") ipv [t8]

of helemaal geen with maar dan [blad8!t8] direct in de if, of zo...

Persoonlijk vind ik dat voorbeelden altijd de lange vorm zouden moeten gebruiken. Maakt het toch wat makkelijker om te volgen als je aan het leren bent. Ook was dan waarschijnlijk eerder opgevallen dat sheet8 vervangen moest worden door iets anders.
 
Zal mijn versie van deze les tonen heb het ietsjes uitgebreider gemaakt. je kunt inloggen met gast/gast of admin/admin

Dank je TitaTovenaar

Dit zal mij ook een eind op weg helpen, zag dat je B7 ook had aan gepast met een "error escape" :thumb:
 
Persoonlijk vind ik dat voorbeelden altijd de lange vorm zouden moeten gebruiken. Maakt het toch wat makkelijker om te volgen als je aan het leren bent. Ook was dan waarschijnlijk eerder opgevallen dat sheet8 vervangen moest worden door iets anders.

Voor mij is de lange form nog handig ivm de les maar als ik zie dat het veel makkelijker en korter kan ga ik dat straks wel toepassen, maar hou mij eerst nog even de les.
 
1 advies: sla die inlogonzin over.

Het 'beveiligen' van Excel vertraagt je VBA leercurve.

En het lijkt me niet slim om de code die uitsluitend van toepassing is op het Userform niet in de macromdolue van het userform te zetten.

Op basis van het voorbeeld heb ik een 'iets' vereenvoudigde versie gemaakt.
- geen verborgen kolommen
- geen beveiligde bladen
- geen exotische tekens
- geen overbodige knop in het userform
- geen rowsourcekoppeling tussen userformcontrols en het werkblad
- gebruik van cel A1 in een werkblad
- gebruik van een listobject
- alle userformcode in de macromodule van het userform
 

Bijlagen

  • __Inlog VBA.xlsb
    28,1 KB · Weergaven: 40
Laatst bewerkt:
Hallo snb,

Kan jou bijdrage niet proberen loopt vast op de rode tekst
Code:
Sub M_sjek()
   If (T_01 <> "") * (T_02 <> "") Then
       sn = Blad8.ListObjects(1).Range
      
       For j = 2 To UBound(sn)
         If sn(j, 1) & sn(j, 2) = T_01 & T_02 Then Exit For
       Next
       
       If j <= UBound(sn) Then
           For jj = 3 To UBound(sn, 2)
            [COLOR="#FF0000"] Sheets(sn(1, jj)).Visible = sn(j, jj)[/COLOR]
           Next
           Caption = "Inlog"
           Hide
       Else
          Caption = "geen geldige gebruiker-wachtwoordcombinatie gevonden"
       End If
    End If
End Sub

Heb al even zitten puzzelen maar deze gaat ver boven mijn pet uit :eek:
 
snb houdt van telegram-stijl programmeren, dat is niet het makkelijkst te begrijpen, noch te leren.

Ik geef persoonlijk de voorkeur aan netjes uitschrijven en aan variabelen wel declareren (met mij de meeste profesionele Office developers) en begrijpelijke namen voor objecten en variabelen.
Maar dat is persoonlijk. Als je maar een stijl ontwikkelt die goed bij jou past.

Een goed boek doet wonderen. VBA programming for Dummies is erg goed bijvoorbeeld.
 
:rolleyes: VBA programming for Dummies

Die heb ik naast mij liggen momenteel maar ligt vaak in de hoek waar ik hem in gooi :confused::confused:
 
Hulp is beschikbaar met msgbox

Code:
Sub M_sjek()
   If (T_01 <> "") * (T_02 <> "") Then
       sn = Blad8.ListObjects(1).Range
      
       For j = 2 To UBound(sn)
         If sn(j, 1) & sn(j, 2) = T_01 & T_02 Then Exit For
       Next
       
       If j <= UBound(sn) Then
           For jj = 3 To UBound(sn, 2)
             [COLOR="#FF0000"]msgbox sn(1,jj) & vbtab & sn(j,jj)[/COLOR]
             Sheets(sn(1, jj)).Visible = sn(j, jj)
           Next
           Caption = "Inlog"
           Hide
       Else
          Caption = "geen geldige gebruiker-wachtwoordcombinatie gevonden"
       End If
    End If
End Sub

Als ik het bestand dat ik heb geplaatst open en de macro's inschakel krijg ik het userform te zien.
Als ik als naam 'gast' invul en als wachtoord ook 'gast', verdwijnt het userform en zijn alle werkbladen die voor een gast getoond moeten worden zichtbaar.
Het lukt mij niet met 'admin' of 'johan' een fout te genereren.


Ik heb nog nooit een wiskundige lange variabelennamen zien gebruiken. (bijv. E=Mc2)
Dat heeft niets met telegrammen of telexen te maken.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan