Denna handledning kommer att täcka interaktion med bladnamn i VBA.
Hämta bladets namn
Arknamn lagras i namn egendom till Ark eller Arbetsblad objekt. Arknamnet är "flik" -namnet som syns längst ner i Excel:
Skaffa ActiveSheet -namn
Detta visar ActiveSheet -namnet i en meddelanderuta:
1 | MsgBox ActiveSheet.Name |
Få bladets namn efter indexnummer
Detta visar det första kalkylbladets namn i en meddelanderuta:
1 | MsgBox Sheets (1) .Name |
Detta visar namnet på det sista kalkylbladet i arbetsboken:
1 | MsgBox Sheets (Sheets.Count) .Name |
Hämta bladnamn efter kodnamn
I VBA Editor finns det ett alternativ för att ändra "kodnamn" för ett blad. Kodnamnet är inte synligt för Excel -användaren och kan bara ses i VBA Editor:
I VBA, när du arbetar med Sheets, kan du referera till det vanliga fliknamnet:
1 | Kalkylark ("Fliknamn"). Aktivera |
eller VBA -kodnamnet:
1 | CodeName.Activate |
Det är önskvärt att referera till kodnamnet om bladflikens namn ändras. Om du tillåter Excel -användare åtkomst till att ändra bladnamn, bör du referera till kodnamnet i din VBA -kod så att en felflik för bladflikar inte orsakar ett fel. Bladkodnamn diskuteras mer detaljerat här.
Gör följande för att få bladnamnet med VBA -kodnamnet:
1 | MsgBox CodeName.Name |
Byt namn på blad
Du kan byta namn på Kalkylark genom att justera namn egendom till Ark eller Arbetsblad objekt.
Byt namn på ActiveSheet
1 | ActiveSheet.Name = "Nytt namn" |
Byt namn på blad efter namn
1 | Kalkylark ("OldSheet"). Namn = "Nytt namn" |
Byt namn på blad efter bladindexnummer
Här använder vi 1 för att byta namn på det första bladet i arbetsboken.
1 | Ark (1) .Name = "Nytt namn" |
Byt namn på blad efter kodnamn
Denna kod kommer att byta namn på ett blad med dess VBA -kodnamn (diskuteras ovan):
1 | Component.Name = "Nytt namn" |
Kontrollera om bladnamnet finns
Vi skapade en funktion för att testa om ett blad med ett visst namn redan finns.
123456789101112 | 'Testa om ett område finns på ett ark.'Lämna intervallet tomt för att testa om det finns ett ark'Ingångar:'WhatSheet - Bladets strängnamn (ex "Sheet1")'WhatRange (Valfritt, Standard = "A1") - Strängnamn för intervall (ex "A1")Function RangeExists (WhatSheet As String, Valfritt ByVal WhatRange As String = "A1") Som BooleanDim test As RangeVid fel Återuppta nästaAnge test = ActiveWorkbook.Sheets (WhatSheet) .Range (WhatRange)RangeExists = Err.Number = 0Vid fel GoTo 0Avsluta funktion |
Funktionen returnerar SANT om arket finns, eller FALSKT om det inte gör det.
Använd funktionen så här:
123 | Sub Test_SheetExists ()MsgBox RangeExists ("setup")Avsluta Sub |
Kopiera blad och byt namn
Detta exempel är från vår artikel om att kopiera ark.
Efter att du har kopierat och klistrat in ett ark blir det nyskapade arket ActiveSheet. Så för att byta namn på ett kopierat blad, använd helt enkelt ActiveSheet.Name:
12345678 | Sub CopySheetRename2 ()Sheets ("Sheet1"). Kopiera After: = Sheets (Sheets.Count)Vid fel Återuppta nästaActiveSheet.Name = "LastSheet"Vid fel GoTo 0Avsluta Sub |
Obs! Vi har lagt till felhantering för att undvika fel om bladnamnet redan finns.