Avatar billede mortenf Nybegynder
29. oktober 2001 - 09:34 Der er 14 kommentarer og
1 løsning

Kald VBA funktion fra shortcut menu

Jeg kalder en VBA funktion i Access fra en shortcut menu. Menuen aktiveres af brugeren ved højre klik med musen.

Af en eller anden grund eksekveres VBA funktionen 3 gange....... er der nogle, der har en anelse om hvorfor?
29. oktober 2001 - 09:35 #1
hvordan ser koden ud?

Har du prøvet at fjerne menu-knappen og lave den igen?
Avatar billede mortenf Nybegynder
29. oktober 2001 - 09:43 #2
Under View|Toolbar|Customize vælges \'shortcut menus\'. Herfra kan man drag-and-drop en kommando til den ønskede short-cut menu..... kald af VBA funktion opnås ved at vælge Command|File|Custom og herefter angive navnet på VBA funktionen i OnAction egenskaben.

Efter en del frustrationer indeholder min VBA funktion nu blot: MsgBox \"Kald fra shortcut menu\"

Jeg ved ikke om det er anderledes at kalde en VBA funktion fra en shortcut menu frem for en toolbar.

29. oktober 2001 - 09:49 #3
Det burde det ikke være!

Dvs at der kommer 3 msgbox\'e?

Jeg har aldrig oplevet det du beskriver. Men i Microsofts forunderlige verden er alt muligt!

Jeg skal da ikke udelukke at det kan være en selvforskyldt fejl, men det lyder som en uregelmæssighed. Derfor foreslog jeg at du slettede menu-punktet og lavede det igen. Eller prøvede at lave et andet menu-punkt som enten kaldte den samme VBA-funktion eller en anden VBA funktion. Altså prøve at lokalisere om det kun er i dette ene tilfælde at den gør det eller om det er generelt.
En reperation kunne også vise sig at gøre underværker.
Avatar billede mortenf Nybegynder
29. oktober 2001 - 10:05 #4
Der kommer tre msgboxe..... det er i den grad mærkeligt. Jeg håbede måske på at der var en property der angav antal gange en funktion blev kaldt...... men på den anden side - hvorfor skulle der egentligt være det!

Jeg har prøvet at lave et par forskellige menupunkter i forskellige menuer.... men der kaldes 3 gange i hver af dem.

Har du nogle bestemte reperationer i tankerne eller er vi ude i en re-installation?
Avatar billede nih Novice
29. oktober 2001 - 10:28 #5
Har oplevet det samme.

Derfor kalder jeg mine vba funktioner vha. makroer. I onAction vælges en makro, der eksekverer en vba funktion. Det giver ikke problemmer.

mvh Niels

29. oktober 2001 - 10:51 #6
Morten-> Jeg ville såmænd bare lave en rep/komprimering af databasen via menuen Funktioner->Databasefuntioner->Reparer/komprimer.

Aner ikke om det hjælper!?

Hvis Niels også har oplevet det, er det måske en velkendt fejl i Access (2000?). I så fald kan man måske installerer en nyere service-release?
Avatar billede nih Novice
29. oktober 2001 - 10:57 #7
Access 97 - Jeg kan ikke lige huske hvor, nu er alle mine værktøjslinjer bygget op af makro\'er.

Har du prøvet at bruge \'sub knap()\' istedet for \'function knap()\' - eller omvendt ???

Niels
Avatar billede mortenf Nybegynder
29. oktober 2001 - 10:58 #8
Niels - præcis som du skrev, så virker det ved at kalde en makro som kalder en VBA funktion.... det er jo fantastisk :-)
Opretter du et svar, så du kan få dine point.

Jeg har prøvet at rette fejlen ved reparer/komprimer, men det hjalp ikke. Jeg har Access 2000 SR-1.... er der en nyere SR?
Avatar billede mortenf Nybegynder
29. oktober 2001 - 11:01 #9
Jeg tror kun man kan kalde en Sub fra en shortcut menu.
Avatar billede nih Novice
29. oktober 2001 - 11:04 #10
Du kan faktisk kalde:

function knap (optional strParameter as string = \"hej\")
  msgbox strParameter
end function

Niels
Avatar billede mortenf Nybegynder
29. oktober 2001 - 11:09 #11
Jeg tror, jeg misforstod dig før...... hvis du taler om at kalde en macro med argumenter, så virker det fint. Jeg kalder pt macroen med form navn som argument, som anvendes i funktionen.
Det er faktisk perfekt med en macro fremfor et direkte funktionskald fra shortcut menuen, da makroen kalder en funktion i et Module, hvorimod det direkte kald er til en dunktion/sub i formens kode.
29. oktober 2001 - 12:54 #12
hmm, det direkte kald burde også kalde en VBA-funktion i et modul i stedet for i formens kode.
Jeg ved ikke om det gør nogen forskel. Og det er da heller ikke forkert at lægge det på formen, men jeg ville nok lægge det i et modul.

NOget andet er, at det SKAL være en Funktion! En Sub virker ikke i alle versioner af Access. Jeg betragter det som en fejl, at det vist virkede i en enkelt version eller 2.
Avatar billede mortenf Nybegynder
29. oktober 2001 - 16:09 #13
Det er ikke lykkes mig at anvende et direkte kald af en funktion i et module.... hvad sætter du i OnAction?
29. oktober 2001 - 16:11 #14
=MinPublicFunction()
Avatar billede mortenf Nybegynder
29. oktober 2001 - 16:25 #15
Tjetjiing....... nu begynder det at falde på plads.

Thomas - Jeg har indtil din sidste kommentar anvendt
OnAction = MinPublicFunction..... og ikke
OnAction = MinPublicFunction()

Uden \'()\', så kaldes funktionen i form koden - og du kan selv gætte hvor mange gange...... 3.
Med \'()\' kaldes funktionen i et module og kun én gang.

Jeg har tidligere stillet et tilsvarende spørgsmål \"VB funktion aktiveret fra Shortcut menu\" uden at finde løsningen, så der ligger nogle point og venter. Hvis du svarer, så får du dem.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester