Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

Ms Access VBA vraag / probleempje.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Best GOT gebruikers,

Voordat ik wat ga uitleggen over mijn vraag / probleem willen ik even zeggen dat ik eigenlijk geen ervaring heb met VBS (of visual basic wat dat betreft), dus mochten jullie denken wat is hij aan het doen dan weet ik dat zelf ook nauwelijks :)
Het gaat om het volgende stukje script / code:
Ter verduidelijking:
De [username] is een control element op het form waar de windows gebruikersnaam in staat. (dit word uit het Os gehaald door een module en dat werkt prima )
De [autorisatie1] en [autorisatie2] zijn twee velden die uit een table worden gehaald, hierin staat een gebruikersnaam die zogenaamd beheer rechten moet krijgen op de access database. (Er worden een ander hoofd formulier opgestart dan als 1 van de namen niet voorkomt in de [username])
Deze formulieren worden gestart en gesloten door een macro genaamd mrchoofdmenuadmin. (beheer rechten) en Mrchoofdmenu (Normaal hoofdmenu)

Dus ik dacht gewoon een simple IF- Then-else code block maken.
Eigenlijk moet de code zeggen als [Username] is gelijk aan [Autorisatie1] voer dan macro mrchoofdmenuadmin uit.
zo niet check dan of [Username] gelijk is aan [Autorisatie2] voer dan macro mrchoofdmenuadmin uit.
als dat ook het geval niet is voer dan maar macro mrchoofdmenu uit.

De Else op de drie na laatste regel heeft een : dit doet access van zelf

De code:
Private Sub Form_Timer()
If [username] = [Autorisatie1] Then DoCmd.RunMacro ("mrchoofdmenuadmin")
ElseIf [username] = [Autorisatie2] Then DoCmd.RunMacro ("mrchoofdmenuadmin")
Else: DoCmd.RunMacro ("mrchoofdmenu")
End If
End sub

Maar ik het form open en het script dus word gedraaid krijg ik de error Compileerfout:
Else zonder If
Vreemd want ik ben toch echt begonnen met een If statement.

Heeft een van jullie een idee wat ik fout doe.

Groeten,
Patrick,

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Ik ben ook niet zo goed met VBA (VBS is wat anders. ;) ) maar volgens mij moet je ofwel alles van de hele If-statement op één regel zetten (of de regels onderbreken met een \ ), ofwel je moet het schrijven als:
Visual Basic:
1
2
3
4
5
6
7
If iets Then
    doe(iets)
ElseIf ietsanders Then
    doe(ietsanders)
Else
    doe(nogwat)
End If

En die : is volgens mij inderdaad verkeerd op die plek. Had je het al geprobeerd zonder?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Private Sub Form_Timer()
If [username] = [Autorisatie1] Then
DoCmd.RunMacro ("mrchoofdmenuadmin")
ElseIf [username] = [Autorisatie2] Then
DoCmd.RunMacro ("mrchoofdmenuadmin")
Else: DoCmd.RunMacro ("mrchoofdmenu")
End If
End Sub

NMe bedankt nu werkt hij wel,
Hij kijkt dus ook nog eens naar wat je op welke regel je iets neerzet.
Daar het ik geen rekening meegehouden.

Nogmaals bedankt.

Groet,
Patrick

  • Acid_Burn
  • Registratie: Augustus 2001
  • Laatst online: 02:58

Acid_Burn

uhuh

En wat belet de gebruiker om zelf even in de VBA code te gaan rotzooien.

Glass Eye Photography | Zelfbouw wireless fightstick | Mijn puzzel site


  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 18-11 21:18
Acid_Burn schreef op zondag 04 mei 2014 @ 16:58:
En wat belet de gebruiker om zelf even in de VBA code te gaan rotzooien.
:)
Gebrek aan vaardigheid belet 98% in de code te rotzooien. En 1% probeert het wel, maar lukt het niet. De laatste 1% is waarschijnlijk degene met de beheersrechten.

[ Voor 4% gewijzigd door Bolukan op 05-05-2014 10:13 ]