ME werkt in Sub maar niet in Function

Status
Niet open voor verdere reacties.

assessor

Gebruiker
Lid geworden
7 jan 2007
Berichten
184
Kan iemand mij aangeven waarom
Code:
Me.txtDateTime = Now
niet werkt wanneer ik van de Sub waar deze in zit een Functie maak?

Wanneer ik de Functie aanroep krijg ik de fout melding "Compile Error: Invalid use om Me keyword"

Ik wil niet gelijk vierkante meters code plaatsen, dit zal vast iets simpels zijn. Maar als er meer info nodig is...

vast dank, Jos
 
Dat hangt er van af waar je de code hebt neergezet; een Private Sub zul je op je formulier gebruikt hebben, en allicht heb je voor de functie een aparte module gemaakt?
 
Dat is correct, ik wil het een en ander een beetje fatsoeneren en bijvoorbeeld niet hetzelfde stukje code in meerdere formulieren hebben.
 
Dan doe je er inderdaad goed aan om er een functie van te maken, die je dan in een aparte module zet. Alleen levert dat één probleem op: ME werkt niet meer. Maar dat hoef ik je niet te vertellen :)
ME is een eigenschap waarmee je een actief object aanduidt. Op de modulepagina van een formulier werkt dat prima, want dan verwijst ME naar het bijhorende formulier. Idem dito voor een rapport. Een zelfstandige module heeft echter geen bijbehorend formulier, en ME wijst dan dus naar het luchtledige. Vandaar de foutmelding.
Er is een simpele oplossing: geef het formulier mee als parameter in de functie. Je hoeft dan niet veel te veranderen. De functie wordt nu:
Code:
Function Testfunctie(frm As Form)
En je roept hem iets anders aan:
Code:
Call Testfunctie(Me)
Ik heb de functie verder niet, alleen die ene regel. Die komt er nu zo uit te zien:
Code:
     frm.txtDateTime = Now
Heel erg universeel is de functie zo nog niet; als je op een formulier waar je de functie gebruikt geen tekstveld [txtDateTime] hebt, loopt hij alsnog vast. Maar daar is ook een mouw aan te passen, want ook de naam van het tekstvak kun je meegeven aan de functie, en die dan koppelen aan de opdrachten. Maar dit zou al moeten werken.
D
 
Dank voor de uitgebreide uitleg, voor nu eisen andere werkzaamheden mijn aandacht. Ik kom hierop terug of het werkt of niet.

grt, Jos
 
Michel, dit werkt als een zonnetje. Ik wil ditzelfde stukje code ook aanroepen vanuit een formulier waarin dit tekstveld niet is opgenomen. Als je mij een voorbeeld kunt geven hoe dit naan te roepen en te koppelen graag. Ook wil ik om zo min mogelijk code te hebben een Functie vanuit een functie aanroepen. Heb je hierbij zaken waarvan je zegt "let even hierop" ?

dank, Jos
 
Als je een functie op velden met verschillende namen kunnen gebruiken, dan moet je de veldnaam ook meegeven als parameter. Dus iets als:
Code:
Function Testfunctie(frm As Form, fld as String)
En je functie wordt dan:
Code:
     frm(fld) = Now
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan