Ibland kanske du vill ta bort allt utom det aktiva kalkylbladet i en Excel-arbetsbok. I dessa situationer kan du använda följande makro.
Hur makrot fungerar
Makrot här går igenom kalkylbladen och matchar varje kalkylbladsnamn med det aktiva bladets namn. Varje gång makrot går i slingor tar det bort alla omatchade kalkylblad. Notera användningen av egenskapen DisplayAlerts i steg 4. Detta stänger effektivt av Excels varningar så att du inte behöver bekräfta varje radering.
Sub Macro1()
'Steg 1: Deklarera dina variabler
Dim ws As Arbetsblad
'Steg 2: Börja gå igenom alla kalkylblad
För varje Ws In ThisWorkbook.Worksheets
'Steg 3: Kontrollera varje kalkylbladsnamn
Om ws.Name <> ThisWorkbook.ActiveSheet.Name Då
'Steg 4: Stäng av varningar och ta bort
Application.DisplayAlerts = False
ws.Ta bort
Application.DisplayAlerts = Sant
Avsluta om
'Steg 5: Gå till nästa kalkylblad
Nästa ws
Avsluta Sub
Makrot deklarerar först ett objekt som heter ws. Det här steget skapar en minnesbehållare för varje kalkylblad som det går igenom.
I steg 2 börjar makrot att slingra sig och talar om för Excel att det kommer att utvärdera alla kalkylblad i den här arbetsboken. Det är skillnad på ThisWorkbook och ActiveWorkbook. ThisWorkBook-objektet hänvisar till arbetsboken som innehåller koden. ActiveWorkBook-objektet hänvisar till den för närvarande aktiva arbetsboken. De returnerar ofta samma objekt, men om arbetsboken som kör koden inte är den aktiva arbetsboken returnerar de olika objekt. I det här fallet vill du inte riskera att ta bort ark i andra arbetsböcker, så du använder ThisWorkBook.
I steg 3 jämför makrot helt enkelt det aktiva arknamnet med arket som för närvarande slingras.
I steg 4, om arknamnen är olika, tar makrot bort arket. Som nämnts använder du DisplayAlerts för att undertrycka eventuella bekräftelsekontroller från Excel. Om du vill bli varnad innan du tar bort arken kan du utelämna Application. DisplayAlerts = False. Om du utelämnar DisplayAlerts-satsen säkerställer du att meddelandet visas, vilket gör att du kan backa från beslutet att ta bort kalkylblad.
I steg 5 går makrot tillbaka för att få nästa ark. När alla ark har utvärderats avslutas makrot.
Utelämna DisplayAlerts-satsen för att se varningsmeddelanden.
Hur man använder makrot
För att implementera detta makro kan du kopiera och klistra in det i en standardmodul:
Aktivera Visual Basic Editor genom att trycka på Alt+F11.
Högerklicka på projektets/arbetsbokens namn i projektfönstret.
Välj Infoga → Modul.
Skriv eller klistra in koden i den nyskapade modulen.
När du använder ThisWorkbook istället för ActiveWorkbook i ett makro, kan du inte köra makrot från den personliga makroarbetsboken. Varför? Eftersom ThisWorkbook skulle hänvisa till den personliga makroarbetsboken, inte till arbetsboken som makrot ska gälla.