WorkBook -evenemang - Spara inte med Freeze Panes - exempel på VBA -kod

Frys rutor med VBA

Jag publicerade nyligen på Frysrutor i Excel, så här kan du göra det med VBA:

Frys rader

 Rader ("1: 1"). Välj ActiveWindow.FreezePanes = True 

Frys kolumner

 Område ("A: A"). Välj ActiveWindow.FreezePanes = True

Frys rader och kolumner

 Område ("B2"). Välj ActiveWindow.FreezePanes = True

Lossa rutorna

 ActiveWindow.FreezePanes = Falskt 

Tvinga arbetsboken att spara utan att frysa rutor

Excel låter oss styra saker genom händelser. Denna artikel är inte en detaljerad diskussion om vad händelser är eller deras funktioner. Istället ger det ett exempel på en WorkBook -händelse. Det här är händelser som hålls på arbetsboknivå snarare än ett visst kalkylblad.

Via VBA kan vi styra vad som händer vid vissa händelser, till exempel före utskrift eller innan du sparar. Ett vanligt problem som jag möter är att ett antal personer jag arbetar med inte gillar filer med Freeze Panes på.

Så i den här artikeln kommer vi att sätta ihop en kod som kontrollerar om Freeze Panes är på och i så fall kommer den inte att spara filen. Det betyder att jag måste spara det utan att frysa rutor - hålla mina kollegor nöjda !!

Det viktigaste med arbetsbokshändelser är att de ska sparas på rätt plats - på arbetsboksnivå.

Följ stegen nedan för att komma åt arbetsboksnivån:

1. Högerklicka på en Excel -arbetsbok - visa kod:

2. Detta kommer att ta upp:

3. Dubbelklicka på "Den här arbetsboken" och välj sedan "WorkBook" från den första rullgardinsmenyn till vänster:

Vi ser att värdet på vänster sida nu har ändrats till "Öppna" - med lite kod för Workbook Open Event. Denna kod låter oss avgöra vad som händer när arbetsboken öppnas för första gången.

Men vi vill kontrollera vad som händer när vi sparar arbetsboken. Så ändra den högra rullgardinsmenyn till "Innan du sparar". Skärmen kommer nu att se ut så här:

Vi sätter nu in följande kod efter deklarationen:

Om ActiveWindow.FreezePanes = True Då är MsgBox "Freeze Panes on - File is NOT Saved" Avbryt = True End Om

Så att hela koden ser ut så här:

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" Cancel = True End If End Sub

Spara nu filen och aktivera sedan Frysrutor i valfritt fönster. Sedan - SPARA filen. En meddelandefält visas där det står att "Frysrutor" är på - och filen sparas inte.

Faktum är att filen inte sparas förrän Freeze Panes har tagits bort.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave