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.