Ten samouczek obejmie interakcję z nazwami arkuszy w VBA.
Pobierz nazwę arkusza
Nazwy arkuszy są przechowywane w Nazwa własność Pościel lub Arkusze robocze obiekt. Nazwa arkusza to nazwa "karty", która jest widoczna na dole programu Excel:
Uzyskaj nazwę aktywnego arkusza
Spowoduje to wyświetlenie nazwy ActiveSheet w oknie komunikatu:
1 | MsgBox ActiveSheet.Name |
Pobierz nazwę arkusza według numeru indeksu
Spowoduje to wyświetlenie nazwy pierwszego arkusza roboczego w oknie komunikatu:
1 | Arkusze MsgBox(1).Name |
Spowoduje to wyświetlenie nazwy ostatniego arkusza roboczego w skoroszycie:
1 | Arkusze MsgBox (Arkusze.Liczba). Nazwa |
Pobierz nazwę arkusza według nazwy kodowej
W edytorze VBA istnieje możliwość zmiany „nazwy kodowej” arkusza. Nazwa kodowa nie jest widoczna dla użytkownika Excela i może być widoczna tylko w Edytorze VBA:
W VBA podczas pracy z Arkuszami możesz odwoływać się do zwykłej nazwy karty:
1 | Arkusze("Nazwa karty").Aktywuj |
lub nazwa kodowa VBA:
1 | KodNazwa.Aktywuj |
Odwoływanie się do nazwy kodowej jest pożądane w przypadku zmiany nazwy zakładki Arkusz. Jeśli zezwolisz użytkownikowi programu Excel na dostęp do zmiany nazw arkuszy, powinieneś odwoływać się do nazwy kodu w kodzie VBA, aby niezgodność nazwy karty Arkusza nie powodowała błędu. Nazwy kodowe arkuszy są omówione bardziej szczegółowo tutaj.
Aby uzyskać nazwę arkusza przy użyciu nazwy kodu VBA, wykonaj następujące czynności:
1 | MsgBox CodeName.Name |
Zmień nazwę arkusza
Możesz zmienić nazwę Arkuszy, dostosowując Nazwa własność Pościel lub Arkusze robocze obiekt.
Zmień nazwę aktywnego arkusza
1 | ActiveSheet.Name = "Nowa nazwa" |
Zmień nazwę arkusza według nazwy
1 | Arkusze("StaryArkusz").Name = "NowaNazwa" |
Zmień nazwę arkusza według numeru indeksu arkusza
Tutaj używamy 1, aby zmienić nazwę pierwszego arkusza w skoroszycie.
1 | Arkusze(1).Name = "Nowa nazwa" |
Zmień nazwę arkusza według nazwy kodowej
Ten kod zmieni nazwę arkusza, używając jego nazwy kodowej VBA (omówionej powyżej):
1 | Component.Name = "Nowa nazwa" |
Sprawdź, czy nazwa arkusza istnieje
Stworzyliśmy funkcję do sprawdzenia, czy Arkusz o określonej nazwie już istnieje.
123456789101112 | 'Sprawdź, czy na arkuszu istnieje zakres.„Pozostaw zakres pusty, aby sprawdzić, czy arkusz istnieje”„Wejścia:' WhatSheet - ciąg Nazwa arkusza (np. „Arkusz1”)' WhatRange (Opcjonalnie, Default = "A1") - Ciąg Nazwa zakresu (np. "A1")Funkcja RangeExists(WhatSheet As String, opcjonalnie ByVal WhatRange As String = "A1") jako BooleanTest przyciemnienia jako zakresPrzy błędzie Wznów DalejUstaw test = ActiveWorkbook.Sheets(WhatSheet).Range(WhatRange)RangeExists = Błąd.Liczba = 0W przypadku błędu Przejdź do 0Koniec funkcji |
Funkcja zwróci TRUE, jeśli arkusz istnieje, lub FALSE, jeśli go nie ma.
Użyj funkcji w ten sposób:
123 | Sub Test_SheetExists()MsgBox RangeExists("ustawienia")Napis końcowy |
Skopiuj arkusz i zmień nazwę
Ten przykład pochodzi z naszego artykułu na temat kopiowania arkuszy.
Po skopiowaniu i wklejeniu Arkusza nowo utworzony arkusz staje się ActiveSheet. Aby zmienić nazwę skopiowanego arkusza, po prostu użyj ActiveSheet.Name:
12345678 | Sub CopySheetRename2()Arkusze("Arkusz1").Kopiuj po:=Arkusze(Arkusze.Liczba)Przy błędzie Wznów DalejActiveSheet.Name = "Ostatni arkusz"W przypadku błędu Przejdź do 0Napis końcowy |
Uwaga: Dodaliśmy obsługę błędów, aby uniknąć błędów, jeśli nazwa arkusza już istnieje.