WorkBook Events - Ikke lagre med Freeze Panes - eksempler på VBA -kode

Frys paneler med VBA

Jeg har nylig lagt ut på Frysekanter i Excel, slik kan du gjøre det ved hjelp av VBA:

Frys rader

 Rader ("1: 1"). Velg ActiveWindow.FreezePanes = True 

Frys kolonner

 Område ("A: A"). Velg ActiveWindow.FreezePanes = True

Frys rader og kolonner

 Område ("B2"). Velg ActiveWindow.FreezePanes = True

Fryse vinduer

 ActiveWindow.FreezePanes = Falsk 

Tving arbeidsbok til å lagre uten frysefelt

Excel lar oss kontrollere ting gjennom hendelser. Denne artikkelen er ikke en detaljert diskusjon om hva hendelser er eller funksjonene deres. I stedet gir det et eksempel på en WorkBook -hendelse. Dette er hendelser som holdes på arbeidsboknivå i stedet for et bestemt regneark.

Gjennom VBA kan vi kontrollere hva som skjer ved visse hendelser, for eksempel før utskrift eller før lagring. Et vanlig problem jeg står overfor er at en rekke mennesker jeg jobber med ikke liker filer med Freeze Panes på.

Så i denne artikkelen vil vi sette sammen noen kode som sjekker om Freeze Panes er på, og i så fall vil den ikke lagre filen. Dette betyr at jeg må lagre den uten å fryse ruter - holde kollegene fornøyde !!

Det viktigste med arbeidsbokhendelser er at de skal lagres på riktig sted - på arbeidsboknivå.

Følg trinnene nedenfor for å få tilgang til arbeidsboknivået:

1. Høyreklikk på en Excel -arbeidsbok - se kode:

2. Dette vil vise:

3. Dobbeltklikk på “This Workbook” og velg deretter “WorkBook” fra den første rullegardinmenyen på venstre side:

Vi ser at verdien på venstre side nå har endret seg til "Åpne" - med litt kode for Workbook Open Event. Denne koden lar oss bestemme hva som skjer når arbeidsboken åpnes for første gang.

Vi vil imidlertid kontrollere hva som skjer når vi lagrer arbeidsboken. Så endre høyre nedtrekksmeny til "Før lagring". Skjermen vil nå se slik ut:

Vi setter nå inn følgende kode etter erklæringen:

Hvis ActiveWindow.FreezePanes = True så er MsgBox "Frysepaneler på - filen IKKE LAGRET" Avbryt = True End If

Slik at den komplette koden nå ser ut som:

Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) If ActiveWindow.FreezePanes = True Then MsgBox "Freeze Panes is on - File is NOT SAVED" Avbryt = True Slutt hvis Slutt Sub

Lagre filen, og aktiver deretter Frysepaneler i et hvilket som helst vindu. Deretter - LAGRE filen på nytt. Det vises en meldingsboks som sier at “Freeze Panes” er på - og at filen ikke er lagret.

Filen vil faktisk ikke lagres før Freeze Panes er fjernet.

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave