Lær hvordan du kan lage en VBA-funksjon som lar deg kopiere visse data fra tidligere poster med bare et klikk på en knapp. Du trenger ikke å skrive de samme tingene gjentatte ganger.
Har du noen gang hatt en opplevelse hvor du trenger å legge inn en ny post i Access som har nøyaktig det samme settet med verdier med en tidligere post bortsett fra ett felt? Det kan være slitsomt, ikke sant? Denne opplæringen vil lære deg hvordan du kan lage en funksjon som med et klikk på en knapp kan kopiere visse verdier fra en tidligere post – noe som sparer deg for tid fra å skrive inn på nytt. Bare følg trinnene nedenfor.
Last ned nå
Hvis du ønsker å starFor å bruke funksjonen så snart som mulig, kan du:
Last ned prøvedatabasen med VBA-koder nå
Ellers, hvis du vil gjøre DIY, kan du lese innholdet nedenfor.
Trinn for å legge til en "Opprett postkopi"-funksjonalitet i Access
- Åpne skjemaet i designvisning.
- Legg til en kommandoknapp. Hopp over kommandoknappveiviseren.
- Legg til en Ved trykk hendelse til knappen.
- Velg knappen mens du er i designvisning.
- Åpne egenskapsarket (ALT + Enter)
- Gå til hendelsesfanen > Ved klikk > …
- når Velg Byggmester menyen dukker opp, velg Code Builder.
- Klikk på OK.
- Dette vil åpne VBA Editor.
-
- Kopier følgende kode og modifiser den for å passe dine behov. Bruk kommentarene som veiledning.
Private Sub Command24_Click() Dim currentID As Long 'TO DO: change all instances of 'BookID' with the actual name of your table's ID or primary key If IsNull(BookID) Then MsgBox prompt:="Please select the record to copy first.", buttons:=vbExclamation Exit Sub End If currentID = BookID DoCmd.GoToRecord record:=acNewRec 'TO DO: set the fields to be copied (those that most likely will have the same values) 'FORMAT: fieldName = Dlookup("fieldname", "tableName", "primaryKeyField=" & currentID) Author = DLookup("Author", "Books", "BookID=" & currentID) Country = DLookup("Country", "Books", "BookID=" & currentID) Language = DLookup("Language", "Books", "BookID=" & currentID) Genre = DLookup("Genre", "Books", "BookID=" & currentID) Publisher = DLookup("Publisher", "Books", "BookID=" & currentID) Title.SetFocus ‘TO DO: change 'Title' with name of field that is going to be edited by the user End Sub - Test nå koden om den fungerer.
Kode forklart
Koden ovenfor ble brukt for en bokhandels database. På grunn av bokserier er det tilfeller der alle bokdetaljer (f.eks. forfatter, land, språk osv.) er de samme bortsett fra ett felt – tittelen. Dermed behovet for koden.
Listen nedenfor viser programflyten.
- Sjekk om brukeren har valgt en post som skal kopieres. En feilmelding vil dukke opp hvis brukeren klikker på knappen rett etter å ha klikket på knappen Legg til ny post – noe som gjør IDen null.
If IsNull(BookID) Then MsgBox prompt:="Please select the record to copy first.", buttons:=vbExclamation Exit Sub End If
- Få IDen eller primærnøkkelen til gjeldende post og tilordne den som verdi for gjeldende ID Dette vil bli brukt som grunnlag for verdiene som skal kopieres.
currentID = BookID
- Legg til en ny rekord.
DoCmd.GoToRecord record:=acNewRec
- Angi verdier for visse felt basert på gjeldende ID Det er her data kopieres fra den valgte posten.
'FORMAT: fieldName = Dlookup("fieldname", "tableName", "primaryKeyField=" & currentID)
Author = DLookup("Author", "Books", "BookID=" & currentID)
Country = DLookup("Country", "Books", "BookID=" & currentID)
Language = DLookup("Language", "Books", "BookID=" & currentID)
Genre = DLookup("Genre", "Books", "BookID=" & currentID)
Publisher = DLookup("Publisher", "Books", "BookID=" & currentID)
- Sett fokus til felt som er most sannsynligvis først redigert av brukeren. Dette forbedrer brukeropplevelsen ettersom det eliminerer behovet for brukeren å manuelt velge feltet som fortsatt må oppdateres.
Title.SetFocus ‘TO DO: change 'Title' with name of field that is going to be edited by the user
Reparer en korrupt database
Hvis du av en uheldig grunn våkner en dag uten å kunne åpne databasen din, kan du prøve tredjepartsverktøy som fungerer Tilgang reparasjon. Det gjør underverker.
Forfatterintroduksjon:
Jayme Stack er en datagjenopprettingsekspert innen DataNumen, Inc., som er verdensledende innen datagjenopprettingsteknologier, inkludert sql utvinning og excel-programvareprodukter for gjenoppretting. For mer informasjon besøk www.datanumen. Med

