15. februar 2004 - 11:56Der er
11 kommentarer og 3 løsninger
Makroer, hjælp til selvhjælp
Jeg ønsker hjælp til at komme over de første hurdler mht. makroer. Jeg har lidt kendskab til vba under excel, men rykker ikke meget, når jeg gætter mig frem i access.
Det jeg søger er en guide, der kan hjælpe mig til en grundlæggende forståelse af opbygningen evt. med nogle kodeeksepler, som jeg kan tilpasse og selv implementere i egne databaser. Kodeeksempler alene, kan jeg ikke bruge endnu.
Når du har lavet en makro dr fungerer efter hensigten, kan du lade Access konvertere den til VBA i menuen:
Funkrioner > Makroer > Konverter til VBA.
Når du bruger dette, vil makroens Handlinger / Handlingsargumenter indsættes i en modul. Herefter kan du kopiere modulets VBa-saætning og indsætte på samme sted i din formular som makroen. Vælg hændelsesprocedüre i stedet for et makronavn.
På denne måde kan du selv lave sine kodeeksempler. Bagefter kan du sammenligne VBA-søtningen med din makro og se, hvor og hvordan handlingsargumenterne skal indsætttes.
Tak mugs, men jeg er stadig ikke med. Lad mig tage et eksempel. Jeg har en kodestump "Ask before saving record" fra mvps.org:
Private Sub Form_BeforeUpdate(Cancel As Integer) Dim strMsg As String strMsg = "Data has changed." strMsg = strMsg & "@Do you wish to save the changes?" strMsg = strMsg & "@Click Yes to Save or No to Discard changes." If MsgBox(strMsg, vbQuestion + vbYesNo, "Save Record?") = vbYes Then 'do nothing Else DoCmd.RunCommand acCmdUndo
'For Access 95, use DoMenuItem instead 'DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70 End If End Sub
Åbn din formular i designvisning. Højreklik på firkanten i formularens øverste venstre hjørne og vælg Egenskaber. Vælg fanebladet Hændelser. Find hændelse beforeUpdate (Før opdatering). Klik på de tre små priokker til højre for linjen. Vælg Kodegenerator. Indstæt din kode mellem de to linier, der nu ses i editoren. Luk editor og egenskabsvindue. Afprøv din formular.
Åbn din formular i designvisning. Højreklik et sted på formularen (Ikke Detaljesektionen, formularhoved eller fod) > Egenskaber > Kodegenerator. Du er nu inde i selve VBA-editoren. Øverst til venstre ser du en kombinationsboks med de kontroller der findes i formularen. Her vælger du i hvilket kontrolelement du vil indsaææte koden. Til højre vælger du hvornår koden skal eksekveres:
- BeForeUpdate - AfterUpdate
o.s.v.
Når du har indsat koden lukker du VBa-editoren og prøver at afspille koden.
Korretk som jkrons skriver. Den første linie Private Sub.. og den sidste skal ikke med. Disse 2 linier kaldes Procedürekroppen, og al koden skal skrives indenfor disse 2 linier.
Herligt, det sparker mig lidt videre. Tak for hurtige svar begge to. Jeg fordeler fluks jeres point. mugs, i dit første svar, skriver du at jeg laver en makro, der fungerer. Gør jeg dette med makrogeneratoren?
Hvis du fra formularen benytter makrogeneratoren, vil makroen automatisk blive indsat i din formular og afspilles, når en bestemt betingelse er opfyldt. Det kan du sagtens gøre. Men jeg forstod dit oprindelige spørgsmål sådan, at du gerne ville se en guide og sammenligne en makro med den tilsvarende VBA-sætning.
Det gør du nemmest ved;
at du åbner db i databasevinduet > Fanen Makroer > Ny.
Og derefter som beskrevet lade Access "oversætte" makroen til VBA.
peter bille > Jeg kan sende dig 13 Word-lektioner om det grundlæggende i at opbygge en Access database samt den færdige database.
Lektionerne er med skærmdumps fra Access97, men de fleste har lavet den i Access 2000. Hvis du vil have materialet skal jeg bruge ca 5 Mb plads i din indbakke.
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.