Hur man fryser paneler med VBA i Excel (5 lämpliga sätt)

  • Dela Detta
Hugh West

I den här artikeln visar jag hur du kan frysa fönstren i ett Excel-arbetsblad med Visual Basic of Applications (VBA). Många gånger när vi arbetar i Excel behöver vi frysa fönstren i arbetsbladet för att underlätta och få en bättre upplevelse. Idag får du lära dig hur du kan göra det här med VBA .

Frysa paneler med VBA i Excel (snabbvisning)

 Sub Freeze_Panes_Row_and_Column() Range("C4").Select ActiveWindow.FreezePanes = True End Sub 

Ladda ner övningsboken

Ladda ner den här arbetsboken för att träna medan du läser den här artikeln.

VBA fryser fönsterrutor.xlsm

En introduktion till Excel Freeze Panes

I Microsoft Excel innebär frysning av rutor följande frysa en rad eller en kolumn eller båda på ett sådant sätt att raden eller kolumnen alltid kommer att vara synlig även om du går nedåt eller åt höger genom att bläddra i rullgardinsmenyn. Det görs normalt med rader eller kolumner som innehåller rubrikerna i datamängden.

Titta till exempel på datamängden nedan. Här har vi fryst arbetsbladet upp till raden 3 ( År ) och kolumnen B ( Produkters namn ).

När vi går nedåt i arbetsbladet genom att rulla i rullgardinsmenyn kommer vi att upptäcka att raderna upp till rad 3 är alltid synliga.

Samma sak för kolumnen B medan vi rullar till höger.

Om du vill frysa rutor i ett kalkylblad manuellt markerar du cellen precis efter raden och kolumnen (Cell C4 i det här exemplet) och gå till Visa> Frysrutor> Frysrutor i Excel-verktygsfältet.

Om du bara vill frysa raden markerar du hela raden och går till Visa> Frysrutor> Frysrutor i Excel-verktygsfältet.

Om du vill frysa endast kolumnen på samma sätt markerar du hela kolumnen och går till Visa> Frysrutor> Frysrutor i Excel-verktygsfältet.

⧭ Anteckningar:

  • Välj Frysning översta raden för att frysa endast den översta raden.
  • På samma sätt väljer du Frys första kolumnen för att frysa endast den första kolumnen.

5 metoder för att frysa paneler med VBA i Excel

Vi har lärt oss vad det innebär att frysa paneler i Excel och hur man gör det manuellt. Nu går vi över till vår huvuddiskussion idag, hur man fryser paneler med VBA .

1. Frys endast en rad med VBA i Excel

Först och främst ska vi se hur vi kan frysa endast en rad med VBA .

För att frysa endast en rad måste du, som tidigare nämnts, först välja hela raden under den rad som ska frysas (Row 4 i det här exemplet).

Därefter måste du tillämpa Frysa rutor kommandot.

Så den VBA koden kommer att vara:

⧭ VBA-kod:

 Sub Freeze_Panes_Only_Row() Range("C4").EntireRow.Select ActiveWindow.FreezePanes = True Range("C4").Select End Sub 

⧭ Utgång:

Kör den här koden. Du ser att det aktiva arbetsbladet är fruset upp till raden 3 .

⧭ Anteckningar:

  • Här har vi använt cell C4 för att välja vilken cell som helst i raden 4 Du väljer den enligt dina behov.
  • Den sista raden i koden Range("C4").Select är till för att avmarkera hela raden. 4 (Om du avmarkerar ett val innebär det att du markerar ett nytt val, eftersom något måste förbli markerat i Excel). Du kan utelämna den här raden om du vill.

Läs mer: Hur du fryser den översta raden i Excel (4 enkla metoder)

2. Frys endast en kolumn med VBA i Excel

Vi har sett hur vi kan frysa en rad med VBA Nu ska vi se hur man fryser en kolumn med VBA .

Om du vill frysa endast en kolumn måste du först välja hela kolumnen till höger om den kolumn som ska frysas (Column C i det här exemplet).

Därefter måste du tillämpa Frysa rutor kommandot.

Så den VBA koden kommer att vara:

⧭ VBA-kod:

 Sub Freeze_Panes_Only_Column() Range("C4").EntireColumn.Select ActiveWindow.FreezePanes = True Range("C4").Select End Sub 

⧭ Utgång:

Kör den här koden. Du ser att det aktiva arbetsbladet är fruset upp till kolumnen C .

⧭ Anteckningar:

  • Här har vi använt cell C4 för att välja en valfri cell i kolumnen C Du väljer den enligt dina behov.
  • Den sista raden i koden Range("C4").Select är till för att avmarkera hela kolumnen. C (Om du avmarkerar ett val innebär det att du markerar ett nytt val, eftersom något måste förbli markerat i Excel). Du kan utelämna den här raden om du vill.

Läs mer: Hur du fryser två kolumner i Excel (5 metoder)

3. Frys både rad och kolumn med VBA i Excel

Vi har sett hur vi kan frysa en rad och en kolumn var för sig. Den här gången ska vi se hur vi kan frysa både raden och kolumnen tillsammans.

Om du vill frysa både raden och kolumnen tillsammans måste du välja en cell under den rad som ska frysas och till höger om den kolumn som ska frysas (Cell C4 i det här exemplet).

Därefter måste du tillämpa Frysa rutor kommandot.

Så den VBA koden kommer att vara:

⧭ VBA-kod:

 Sub Freeze_Panes_Row_and_Column() Range("C4").Select ActiveWindow.FreezePanes = True End Sub 

⧭ Utgång:

Kör den här koden. Du ser att det aktiva arbetsbladet är fruset upp till raden 3 och kolumnen C .

⧭ Anteckningar:

  • Här har vi använt cell C4 för att välja en cell under raden 3 och till höger till kolumnen B . Det är en cell C4 Du kan välja den efter dina behov.

Läs mer: Hur du fryser valda paneler i Excel (10 sätt)

Liknande läsningar:

  • Hur man fryser flera paneler i Excel (4 kriterier)
  • Tangentbordsgenvägar för att frysa paneler i Excel (3 genvägar)
  • Hur du fryser de tre första kolumnerna i Excel (4 snabba sätt)

4. Utveckla ett användarformulär för att frysa rutor med VBA i Excel

Vi har sett hur vi kan frysa en rad eller en kolumn eller både rad och kolumn med VBA i ett Excel-arbetsblad.

Nu ska vi utveckla ett användarformulär för att samla alla de olika uppgifterna i ett enda gränssnitt.

⧭ Steg för steg-för-steg-förfarande för att utveckla användarformuläret:

⧪ Steg 1:

  • Tryck på ALT+F11 på tangentbordet för att öppna Visual Basic
  • I Visual Basic redaktör, gå till Infoga> UserForm för att infoga en ny Användarformulär .

⧪ Steg 2:

  • En ny UserForm kallas . Användarformulär1 kommer att skapas i VBA
  • Till vänster om den UserForm får du en Verktygslåda kallas . Kontroll . För musen över verktygslådan och sök efter en TextBox (TextBox1) När du har hittat en drar du den över toppen av UserForm .
  • På samma sätt kan du dra en ListBox ( ListBox1 ) till den Textruta , och en CommandButton (Commandbutton1) till det nedre högra hörnet av UserForm . Ändra visningen av CommandButton till OK . UserForm bör nu se ut så här:

⧪ Steg 3:

Infoga en Modul ( Infoga> Modul ) från VBA verktygslåda

⧪ Steg 4:

Följande ska införas VBA kod i den Modul .

 Sub Run_UserForm() UserForm1.Caption = "Freeze Panes" UserForm1.TextBox1.Text = Selection.Address UserForm1.TextBox1.BorderStyle = fmBorderStyleSingle UserForm1.ListBox1.BorderStyle = fmBorderStyleSingle UserForm1.ListBox1.ListStyle = fmListStyleOption UserForm1.ListBox1.AddItem "1. Freeze Row" UserForm1.ListBox1.AddItem "2. Freeze Column" UserForm1.ListBox1.AddItem "3. Freeze Both Row and Column"Ladda UserForm1 UserForm1.Show End Sub 

⧪ Steg 5:

Dubbelklicka på CommandButton visas som OK . En privat underfunktion som heter CommandButton1_Click öppnas. Sätt in följande kod där:

 Om UserForm1.ListBox1.Selected(0) = True Set Rng = Selection Rng.EntireRow.Select ActiveWindow.FreezePanes = True Rng.Select ElseIf UserForm1.ListBox1.Selected(1) = True Then Set Rng = Selection Rng.EntireColumn.Select ActiveWindow.FreezePanes = True Rng.Select ElseIf UserForm1.ListBox1.Selected(2) = True ThenActiveWindow.FreezePanes = True Else MsgBox "Select At Least One. ", vbExclamation End If Ladda av UserForm1 

⧪ Steg 6:

På samma sätt dubbelklickar du på TextBox1 . En privat underfunktion som heter TextBox1_Change öppnas. Sätt in följande kod där.

 Private Sub TextBox1_Change() On Error GoTo Message Range(TextBox1.Text).Select Message: Note = 5 End Sub 

⧪ Steg 7:

Din UserForm är nu redo att användas. Välj cellen nedanför den rad som ska frysas och till höger om den kolumn som ska frysas (Cell C4 här), och kör Makro kallas . Kör_användarformulär .

⧪ Steg 8:

  • UserForm kommer att laddas. Du hittar adressen till den markerade cellen ( C4 ) i TextBox Om du vill kan du ändra detta.
  • Välj sedan något av de tre alternativen som finns tillgängliga i ListBox Här vill jag frysa både rad och kolumn, så jag har valt Frys både rad och kolumn .
  • Klicka sedan på OK .

⧪ Steg 9:

Du hittar arbetsbladet fryst enligt dina önskemål. (Här fryst upp till raden 3 och kolumnen B ).

Relaterat innehåll: Hur du fryser bilden i Excel (6 snabba knep)

5. Alternativ till frysrutor i Excel: dela fönstret med VBA

Vi har talat mycket om den frysa rutor i Excel. Nu ska vi se ett mycket användbart alternativ till frysa rutor i Excel, den Delat fönster kommandot.

Du kan ActiveWindow.SplitRow eller . ActiveWindow.SplitColumn VBA för att dela upp arbetsbladet i rader eller kolumner.

Om du till exempel vill dela upp arbetsbladet från rad 3 , använda:

 ActiveWindow.SplitRow = 3 

På samma sätt kan du dela upp arbetsbladet från kolumnen B , använda:

 ActiveWindow.SplitColumn = 2 

⧭ VBA-kod:

 Sub Split_Window() ActiveWindow.SplitRow = 3 ActiveWindow.SplitColumn = 2 End Sub 

⧭ Utgång:

Kör koden, den delar upp det aktiva arbetsbladet från rad 3 och kolumnen B .

Relaterat innehåll: Hur du använder anpassade frysrutor i Excel (3 enkla sätt)

Saker att komma ihåg

  • Innan du ansöker Frysa rutor i Excel måste du Frysa upp alla frysrutor redan tillämpats. I annat fall Frysa rutor kommandot fungerar inte.
  • Frysa rutor kommandot kommer inte att fungera genom sammanslagna celler. Så avbryta sammanfogningen innan du använder den Frysa rutor kommandot om det finns något.

Slutsats

Så här är metoderna att använda Frysa rutor med VBA i Excel. Jag har försökt att diskutera alla möjliga sätt att tillämpa Frysa rutor över ett arbetsblad i Excel. Har du några frågor? Fråga oss gärna och glöm inte att besöka vår webbplats. ExcelWIKI för fler inlägg och uppdateringar.

Hugh West är en mycket erfaren Excel-tränare och analytiker med över 10 års erfarenhet i branschen. Han har en kandidatexamen i redovisning och ekonomi och en magisterexamen i företagsekonomi. Hugh har en passion för undervisning och har utvecklat ett unikt undervisningssätt som är lätt att följa och förstå. Hans expertkunskap om Excel har hjälpt tusentals studenter och yrkesverksamma över hela världen att förbättra sina färdigheter och utmärka sig i sina karriärer. Genom sin blogg delar Hugh med sig av sin kunskap med världen, och erbjuder gratis Excel-handledning och onlineutbildning för att hjälpa individer och företag att nå sin fulla potential.