Excel VBA-eksempler: Eksempler på innledende hendelser

Hvis du prøver å få et godt grep om Excel VBA , kan du sannsynligvis ha nytte av noen få eksempler for å utvikle den visuelle grunnleggende dyktigheten. Her finner du noen få Excel VBA-eksempler slik at du kan få taket på denne hendelseshåndteringsvirksomheten.

Excel VBA-eksempel: Open-hendelsen for en arbeidsbok

En av de mest brukte Excel VBA-hendelsene er Workbook Open-hendelsen. Anta at du har en arbeidsbok du bruker hver dag. Workbook_Open-prosedyren i dette eksemplet utføres hver gang arbeidsboken åpnes. Prosedyren kontrollerer ukedagen; hvis det er fredag, viser koden en påminnelse for deg.

Følg disse trinnene for å lage Excel VBA-prosedyren som kjøres når Workbook Open-hendelsen oppstår:

Åpne Excel-arbeidsboken.
Enhver Excel-arbeidsbok vil gjøre det.

Trykk Alt+F11 for å aktivere VBE.

Finn arbeidsboken i prosjektvinduet.

Dobbeltklikk på prosjektnavnet for å vise elementene, om nødvendig.

Dobbeltklikk på ThisWorkbook-elementet.
VBE viser et tomt kodevindu for ThisWorkbook-objektet.

I kodevinduet velger du Arbeidsbok fra rullegardinlisten Objekt (venstre).
VBE legger inn begynnelses- og sluttsetningene for en Workbook_Open-prosedyre.

Skriv inn følgende utsagn, så den komplette hendelsesprosedyren ser slik ut:

Privat underarbeidsbok_Open()
  Dim melding som streng
  Hvis ukedag(nå) = 6 da
    Msg = "I dag er det fredag. Ikke glem å "
    Msg = Msg & "send inn TPS-rapporten!"
    MsgBox Msg
  Slutt om
End Sub

Kodevinduet skal se slik ut.

Excel VBA-eksempler: Eksempler på innledende hendelser

Denne hendelsesbehandlingsprosedyren utføres når arbeidsboken åpnes.

Workbook_Open kjøres automatisk når arbeidsboken åpnes. Den bruker VBAs WeekDay-funksjon for å bestemme ukedagen. Hvis det er fredag ​​(dag 6), minner en meldingsboks brukeren på å sende inn en rapport. Hvis det ikke er fredag, skjer det ingenting.

Hvis i dag ikke er fredag, kan det være vanskelig å teste denne prosedyren. Du kan bare endre 6-en for å samsvare med dagens faktiske dagnummer.

Og selvfølgelig kan du endre denne prosedyren slik du vil. For eksempel viser følgende versjon en melding hver gang arbeidsboken åpnes. Dette blir irriterende etter en stund.

En Workbook_Open-prosedyre kan gjøre nesten hva som helst. Disse hendelsesbehandlerne brukes ofte til følgende:

  • Vise velkomstmeldinger (som i Franks kule arbeidsbok)
  • Åpne andre arbeidsbøker
  • Aktivering av et bestemt regneark i arbeidsboken
  • Sette opp egendefinerte snarveimenyer

Her er et siste Excel VBA-eksempel på en Workbook_Open-prosedyre som bruker funksjonene GetSetting og SaveSetting for å holde styr på hvor mange ganger arbeidsboken har blitt åpnet. SaveSetting-funksjonen skriver en verdi til Windows-registeret, og GetSetting-funksjonen henter denne verdien (se hjelpesystemet for detaljer). Følgende Excel VBA-eksempel henter tellingen fra registret, øker den og lagrer den deretter tilbake til registret. Den forteller også brukeren verdien av Cnt som tilsvarer antall ganger arbeidsboken har blitt åpnet.

Privat underarbeidsbok_Open()
  Dim Cnt As Long
  Cnt = GetSetting("MinApp", "Innstillinger", "Åpne", 0)
  Cnt = Cnt + 1
  Lagre Innstilling "MinApp", "Innstillinger", "Åpne", Cnt
  MsgBox "Denne arbeidsboken har blitt åpnet " & Cnt & " ganger."
End Sub

Excel VBA-eksempler: Eksempler på innledende hendelser

Bruke en Workbook_Open hendelsesbehandler for å holde styr på hvor mange ganger en arbeidsbok har blitt åpnet.

Excel VBA-eksempel: BeforeClose-hendelsen for en arbeidsbok

Her er et eksempel på Excel VBA Workbook_BeforeClose hendelsesbehandlingsprosedyre, som utføres automatisk rett før arbeidsboken lukkes. Denne prosedyren er plassert i kodevinduet for et ThisWorkbook-objekt:

Privat underarbeidsbok_BeforeClose(Avbryt som boolsk)
  Dim melding som streng
  Dim Ans As Long
  Dim F-navn som streng
  Msg = "Vil du ta en sikkerhetskopi av denne filen?"
  Ans = MsgBox(Msg, vbYesNo)
  Hvis Ans = vbJa Da
    FName = "F:\BACKUP\" & ThisWorkbook.Name
    ThisWorkbook.SaveCopyAs FName
  Slutt om
End Sub

Denne rutinen bruker en meldingsboks for å spørre brukeren om han vil ta en sikkerhetskopi av arbeidsboken. Hvis svaret er ja, bruker koden SaveCopyAs-metoden for å lagre en sikkerhetskopi av filen på stasjon F. Hvis du tilpasser denne prosedyren for eget bruk, må du endre stasjonen og banen.

Excel-programmerere bruker ofte en Workbook_BeforeClose-prosedyre for å rydde opp etter seg. For eksempel, hvis du bruker en Workbook_Open-prosedyre for å endre noen innstillinger når du åpner en arbeidsbok (for eksempel skjuler statuslinjen), er det bare hensiktsmessig at du returnerer innstillingene til den opprinnelige tilstanden når du lukker arbeidsboken. Du kan utføre denne elektroniske rengjøringen med en Workbook_BeforeClose-prosedyre.

Når du bruker Workbook_BeforeClose-hendelsen, husk dette: Hvis du lukker Excel og en åpen fil har blitt endret siden forrige lagring, viser Excel den vanlige meldingsboksen "Vil du lagre endringene dine". Ved å klikke på Avbryt-knappen avbrytes hele lukkingsprosessen. Men Workbook_BeforeClose-hendelsen vil ha blitt utført uansett.

Excel VBA-eksempel: BeforeSave-hendelsen for en arbeidsbok

FørSave-hendelsen, som navnet tilsier, utløses før en arbeidsbok lagres. Denne hendelsen oppstår når du velger Fil → Lagre eller Fil → Lagre som.

Følgende prosedyre, som er plassert i kode-vinduet for en Thisworkbook objekt, viser BeforeSave hendelsen. Rutinen oppdaterer verdien i en celle (celle A1 på Ark1) hver gang arbeidsboken lagres. Med andre ord fungerer celle A1 som en teller for å holde styr på antall ganger filen ble lagret.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI _
  Som boolsk, avbryt som boolsk)
  Dim teller som rekkevidde
  Set Counter = Sheets("Sheet1"). Range("A1")
  Counter. Value = Counter. Value + 1
End Sub

Legg merke til at Workbook_BeforeSave-prosedyren har to argumenter: SaveAsUI og Cancel. For å demonstrere hvordan disse argumentene fungerer, undersøk følgende makro, som kjøres før arbeidsboken lagres. Denne prosedyren prøver å hindre brukeren i å lagre arbeidsboken med et annet navn. Hvis brukeren velger Fil → Lagre som, er SaveAsUI-argumentet True.

Når koden kjøres, sjekker den SaveAsUI-verdien. Hvis denne variabelen er True, viser prosedyren en melding og setter Cancel til True, som avbryter Lagre-operasjonen.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI _
  Som boolsk, avbryt som boolsk)
  Hvis SaveAsUI Da
    MsgBox "Du kan ikke lagre en kopi av denne arbeidsboken!"
  Avbryt = Sant
  Slutt om
End Sub

Vær oppmerksom på at denne prosedyren ikke vil hindre noen i å lagre en kopi med et annet navn. Hvis noen virkelig vil gjøre det, kan han eller hun bare åpne arbeidsboken med makroer deaktivert. Når makroer er deaktivert, deaktiveres også hendelsesbehandlerprosedyrer, noe som er fornuftig fordi de tross alt er makroer.


Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows

Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows

Hvordan blokkere Microsoft Word fra å åpne filer i skrivebeskyttet modus på Windows Microsoft Word åpner filer i skrivebeskyttet modus, noe som gjør det umulig å redigere dem? Ikke bekymre deg, metodene er nedenfor

Hvordan fikse feil utskrift av Microsoft Word-dokumenter

Hvordan fikse feil utskrift av Microsoft Word-dokumenter

Slik fikser du feil ved utskrift av feil Microsoft Word-dokumenter Feil ved utskrift av Word-dokumenter med endrede fonter, rotete avsnitt, manglende tekst eller tapt innhold er ganske vanlig. Men ikke gjør det

Slett penn- og highlighter-tegninger på PowerPoint-lysbilder

Slett penn- og highlighter-tegninger på PowerPoint-lysbilder

Hvis du har brukt pennen eller merkepennen til å tegne på PowerPoint-lysbildene dine under en presentasjon, kan du lagre tegningene til neste presentasjon eller slette dem, slik at du neste gang du viser dem starter med rene PowerPoint-lysbilder. Følg disse instruksjonene for å slette penn- og merkepenntegninger: Slette linje én på […]

Style Library-innhold i SharePoint 2010

Style Library-innhold i SharePoint 2010

Stilbiblioteket inneholder CSS-filer, Extensible Stylesheet Language-filer (XSL) og bilder som brukes av forhåndsdefinerte mastersider, sideoppsett og kontroller i SharePoint 2010. For å finne CSS-filer i stilbiblioteket til et publiseringsnettsted: Velg Site Actions→ View Alt innhold på nettstedet. Innholdet på nettstedet vises. Style-biblioteket ligger i […]

Formater tall i tusenvis og millioner i Excel-rapporter

Formater tall i tusenvis og millioner i Excel-rapporter

Ikke overveld publikum med gigantiske tall. I Microsoft Excel kan du forbedre lesbarheten til dashbordene og rapportene dine ved å formatere tallene dine slik at de vises i tusenvis eller millioner.

Hvordan dele og følge SharePoint-nettsteder

Hvordan dele og følge SharePoint-nettsteder

Lær hvordan du bruker SharePoints sosiale nettverksverktøy som lar enkeltpersoner og grupper kommunisere, samarbeide, dele og koble til.

Hvordan konvertere datoer til julianske formater i Excel

Hvordan konvertere datoer til julianske formater i Excel

Julianske datoer brukes ofte i produksjonsmiljøer som et tidsstempel og hurtigreferanse for et batchnummer. Denne typen datokoding lar forhandlere, forbrukere og serviceagenter identifisere når et produkt ble laget, og dermed alderen på produktet. Julianske datoer brukes også i programmering, militæret og astronomi. Forskjellig […]

Hvordan lage en Access Web App

Hvordan lage en Access Web App

Du kan lage en nettapp i Access 2016. Så hva er en nettapp egentlig? Vel, nettet betyr at det er online, og appen er bare en forkortelse for "applikasjon". En Custom Web App er en online databaseapplikasjon som du får tilgang til fra skyen ved hjelp av en nettleser. Du bygger og vedlikeholder nettappen i skrivebordsversjonen […]

Hurtigstartlinje i SharePoint 2010

Hurtigstartlinje i SharePoint 2010

De fleste sidene i SharePoint 2010 viser en liste over navigasjonskoblinger på hurtigstartlinjen langs venstre side av siden. Hurtigstartlinjen viser koblinger til innhold på nettstedet som lister, biblioteker, nettsteder og publiseringssider. Hurtigstartlinjen inneholder to svært viktige lenker: Linken for alt nettstedinnhold: […]

Hva betyr løserfeilmeldingene i Excel?

Hva betyr løserfeilmeldingene i Excel?

For enkle problemer finner Solver i Excel vanligvis raskt de optimale Solver-variabelverdiene for objektivfunksjonen. Men i noen tilfeller har Solver problemer med å finne Solver-variabelverdiene som optimerer objektivfunksjonen. I disse tilfellene viser Solver vanligvis en melding eller en feilmelding som beskriver eller diskuterer problemet som […]