[VBA] Programmacode wordt niet uitgevoerd

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • rickjehh
  • Registratie: Februari 2008
  • Laatst online: 15-09 16:55
Hallo medetweakers,

Voor mijn werk ben ik op dit moment bezig om in excel een aantal functionaliteiten in een werkblad te krijgen (hierbij werk ik met Excel 2007). Daarvoor heb ik de VBA editor nodig om programmacode toe te voegen. Ik heb als voorbeeld even een simpele functie gemaakt die cellen controleert op de inhoud en deze daarna van kleur veranderd. Deze functie wordt aangeroepen in de "Form_Load" (de Form_Load wordt als het goed is uitgevoerd op het moment dat de betreffende sheet geladen wordt).

Echter wordt mijn programmacode helemaal niet uitgevoerd als ik de excel sheet open. Ik heb de opties van excel nagekeken en bij instellingen van vertrouwenscentrum macro's ingeschakeld en ook de optie "Toegang tot het objectmodel van het VBA-project vertrouwen" aangevinkt. Tevens heb ik getracht op google hierover informatie te vinden, maar alle opties die daar gegeven worden werken niet. Zo heb ik de "Form_Load" functie aangepast naar "UserForm_Initialize", maar dat werkte ook niet.

Ik krijg verder helemaal geen foutmeldingen of waarschuwingen, als ik het werkblad in excel open gebeurt er helemaal niets. Echter als ik met de zogenaamde "debugger" van VBA ga debuggen (d.m.v. F5 waarna de betreffende functie wel wordt uitgevoerd), veranderen de kleuren ineens wel en blijkt de door mij geschreven code dus wel te werken. Alleen niet automatisch. Hieronder de code inclusief functie:

Visual Basic:
1
2
3
Private Sub Form_Load()
     ControleerPlanning
End Sub

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
Form_Load wordt zover ik weet niet aangeroepen als een excel sheet geopend wordt maar als een winform (die blijkbaar onderdeel is van je macro) wordt aangeroepen. Ik denk dat je dus expliciet je macro moet aanroepen vanuit excel (wat dus oa bij het debuggen gebeurt) door mv extra->macro's ofzoiets. Of dat je de aanroep naar ControleerPlanning ergens anders moet zetten / in moet stellen dat de macro automatisch start.

Daarvoor kwam ik oa dit tegen: http://www.mrexcel.com/archive/VBA/7298d.html zoiets dus
Visual Basic:
1
2
3
4
5
6
'Call your macro from Sub Workbook_Open (). Go to Tools > Macro > Visual Basic Editor
'and under "Microsoft Excel Objects" click on ThisWorkBook. Then use:

Sub WorkBook_Open ()
Call MyMacro
End Sub

[ Voor 18% gewijzigd door roy-t op 23-06-2009 13:49 ]

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • rickjehh
  • Registratie: Februari 2008
  • Laatst online: 15-09 16:55
roy-t schreef op dinsdag 23 juni 2009 @ 13:48:
Form_Load wordt zover ik weet niet aangeroepen als een excel sheet geopend wordt maar als een winform (die blijkbaar onderdeel is van je macro) wordt aangeroepen. Ik denk dat je dus expliciet je macro moet aanroepen vanuit excel (wat dus oa bij het debuggen gebeurt) door mv extra->macro's ofzoiets. Of dat je de aanroep naar ControleerPlanning ergens anders moet zetten / in moet stellen dat de macro automatisch start.

Daarvoor kwam ik oa dit tegen: http://www.mrexcel.com/archive/VBA/7298d.html zoiets dus
Visual Basic:
1
2
3
4
5
6
'Call your macro from Sub Workbook_Open (). Go to Tools > Macro > Visual Basic Editor
'and under "Microsoft Excel Objects" click on ThisWorkBook. Then use:

Sub WorkBook_Open ()
Call MyMacro
End Sub
roy hardstikke bedankt, dat is de oplossing inderdaad. Ik heb nu een marco aangemaakt en daarin mijn functie geplaatst. Vervolgens ben ik naar "ThisWorkBook" gegaan en heb ik daar hetgeen toegevoegd dat jij hierboven noemt en dat werkt perfect. Super!