[Excel2003|VBA] Macro functie bij klikken Annuleren

Pagina: 1
Acties:
  • 496 views sinds 30-01-2008
  • Reageer

  • Gulf_5
  • Registratie: Maart 2004
  • Laatst online: 20-10-2024

Gulf_5

Lucht-v/w-aardig

Topicstarter
Ik ben bezig om een programma in Excel te maken, dat waterdicht moet worden gemaakt... Alleen ikzelf mag gemachtigd zijn om dingen te wijzigen. Het personeel mag data invoeren en verder niet.

Nu heb ik een login scherm, waar de gebruiker zijn/haar naam selecteert in een pulldown menu, waarna ze een pop-up krijgen om hun wachtwoord in te voeren. Bij een fout wachtwoord wordt de macro afgebroken en krijgt de gebruiker een melding het opnieuw te proberen, bij een goed wachtwoord gaat de gebruiker door naar een volgend scherm. Elke wijziging die daarna wordt doorgevoerd wordt gelogd onder de naam van die gebruiker. (Zodat ik alles kan blijven traceren)

Nu heb ik het volgende probleem, als de gebruiker in de pop-up voor het wachtwoord op Annuleren klikt, (keuze tussen OK en Annuleren) gaat de macro verder achter de wachtwoord check, zonder het wachtwoord dus te controleren. Op deze manier heeft de hele login-beveiligingsprocedure dus geen zin.... aangezien zonder de wachtwoordcheck automatisch de admin-login procedure wordt aangestuurd...

Is het mogelijk om in de macro een "click-on-annuleren"-event toe te voegen of iets dergelijks ? Zodat de macro wordt afgebroken op dezelfde wijze als bij een foutief wachtwoord ? Ik heb al in de help van office zitten zoeken maar kan daarin niks vinden, ook op GoT is dit punt nog niet aan de orde gekomen voorzover ik kan vinden...
Alvast bedankt ! :)

iets met foto's...


  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 21:59
Zodra die wachtwoord dialog afgesloten is, kun je toch opvragen met welke knop het ding afgesloten is ?

Was advocaat maar vindt het juridische nog steeds leuk. Doet tegenwoordig iets in de metaal.


  • Gulf_5
  • Registratie: Maart 2004
  • Laatst online: 20-10-2024

Gulf_5

Lucht-v/w-aardig

Topicstarter
als dat kan, kun jij me dan vertellen hoe ? :p want dat is dus net het punt waar het bij mij ophoudt...

iets met foto's...


  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 21:59
Gulf_5 schreef op donderdag 19 oktober 2006 @ 11:26:
als dat kan, kun jij me dan vertellen hoe ? :p want dat is dus net het punt waar het bij mij ophoudt...
Dat ligt eraan wat voor soort dialog je gebruikt voor dat wachtwoord. Ik neem aan dat je een inputbox gebruikt en die geeft een lege string terug wanneer er op cancel wordt gedrukt.

Maar dit is wel allemaal heel erg van het 'kijk eens in de handleiding' niveau.

Was advocaat maar vindt het juridische nog steeds leuk. Doet tegenwoordig iets in de metaal.


  • Gulf_5
  • Registratie: Maart 2004
  • Laatst online: 20-10-2024

Gulf_5

Lucht-v/w-aardig

Topicstarter
ik wil hier best de code posten om daarmee alleen al aan te geven dat dit niet een "kijk eens in de handleiding" niveau is...

offtopic: Het gaat hier om een Excel bestand van ruim 3,5 MB dat vol staat met VBA waar ik al weken mee bezig ben, alleen kom ik hier gewoon niet uit, ik ben redelijk handig met VBA maar dit lukt me gewoon niet en daarom vraag ik hulp en dan komt t best flauw over als iemand me voor lui gaat lopen uitmaken....

ontopic: Als iemand niets invult en OK klikt komt er ook een lege string terug... en dan wordt de toegang geweigerd omdat die lege string niet overeenkomt met het wachtwoord... Als er op Cancel wordt gedrukt, slaat ie gewoon het hele macro gedeelte over... en gaat ie verder na het IF gedeelte...

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[nog meer code...]
Do Until x = 3
    'check 3-maal wachtwoord, dan blokkeren
    pass = InputBox("Voer wachtwoord in voor gebruiker " & a, "Wachtwoord", "")
        If pass = b Then
        Range("N24").Value = a
        goto_start
        Exit Sub
        Else
            If x = 2 Then
            MsgBox "U heeft 3 maal een foutief wachtwoord ingevoerd, uw account wordt geblokkeerd" & Chr(13) & "Neem contact op met uw systeembeheerder", vbOKOnly, "Geblokkeerd"
            Else
            End If
        MsgBox "Het wachtwoord is onjuist, probeer nogmaals" & Chr(13) & "(Let op: na drie foutieve pogingen wordt deze gebruiker geblokkeerd)", vbOKOnly, "Onjuist wachtwoord"
        x = x + 1
        End If
    Loop
[...nog meer code]

iets met foto's...


  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 21:59
Sorry voor de onjuiste aanname. 'assumption is the mother of all fuckups'.

Als ik deze code gebruik en ik druk op 'cancel' in de inputbox, voert 'ie gewoon de 'else...end if' uit.

Was advocaat maar vindt het juridische nog steeds leuk. Doet tegenwoordig iets in de metaal.


  • Gulf_5
  • Registratie: Maart 2004
  • Laatst online: 20-10-2024

Gulf_5

Lucht-v/w-aardig

Topicstarter
hmmm.... wat gaat er bij mij dan verkeerd :? :/
dan zit t m ws niet daar in ofzo.... ik ga ff verder zoeken... tnx

iets met foto's...


  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 22:03
Ik denk dat de fout niet zit in de cancel knop, maar in de afhandeling van een fout (of leeg in geval van een cancel) password.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[nog meer code...]
Do Until x = 3
    'check 3-maal wachtwoord, dan blokkeren
    pass = InputBox("Voer wachtwoord in voor gebruiker " & a, "Wachtwoord", "")
        If pass = b Then
        Range("N24").Value = a
        goto_start
        Exit Sub
        Else
            If x = 2 Then
            MsgBox "U heeft 3 maal een foutief wachtwoord ingevoerd, uw account wordt geblokkeerd" & Chr(13) & "Neem contact op met uw systeembeheerder", vbOKOnly, "Geblokkeerd"
'hier staat neem ik aan een methode om het account te blokkeren.
'En dan nog een code om te voorkomen dat de macrouitvoering rustig verder hobbelt.
End 'Inderdaad, zo simpel ;)
'of, n.a.v. de opmerking van Heretic:
Activeworkbook.Saved=true
Activeworkbook.close
'Gooi het bestand dicht zonder te saven.
'of verzin zelf iets wat de macrouitvoering stopzet en zet dat hier neer.
            Else
            End If
        MsgBox "Het wachtwoord is onjuist, probeer nogmaals" & Chr(13) & "(Let op: na drie foutieve pogingen wordt deze gebruiker geblokkeerd)", vbOKOnly, "Onjuist wachtwoord"
        x = x + 1
        End If
    Loop
[...nog meer code]
[/quote]

[ Voor 8% gewijzigd door onkl op 19-10-2006 15:12 ]


Verwijderd

zoek eens in de vb help door op de volgende keywords te F1'en en de help te consulteren:
inputbox->de functie die "" teruggeeft als ie gecanceld wordt.
application.inputbox->de methode die false teruggeeft als ie gecanceld wordt.
opgelet, de opdract End wist alle lokale globale & statische variabelen en gebeurtenisafhandelingsprocedures.
Pagina: 1