VBA - Dodawanie arkusza do skoroszytu

VBA - Dodawanie arkusza do skoroszytu

Wprowadzenie

W zależności od wyniku, który chcesz osiągnąć, możesz użyć:
  • Metoda kopiowania => Kopia istniejącego arkusza
  • Dodaj metodę => Aby dodać nowy pusty arkusz do skoroszytu.

Musisz także upewnić się, że nazwa nowego arkusza jest zgodna. Oznacza to, że nazwa arkusza nie powinna być identyczna z istniejącą ani zawierać żadnych zabronionych znaków. W obu przypadkach metody weryfikacji powinny być takie same.

Metoda kopiowania

Skopiuj arkusz. Dane i format nowego arkusza będą identyczne z arkuszem źródłowym.

Składnia

expression .Copy ( Before, After )

Wyrażenie może być obiektem arkusza lub arkusza roboczego.

Parametry Przed i Po są opcjonalne. Możesz określić tylko jeden z tych dwóch parametrów. Są one typu Variant i mogą reprezentować lokalizację arkusza przed lub po tym, który chcesz skopiować. Jeśli parametr zostanie pominięty, arkusz zostanie automatycznie skopiowany do nowego skoroszytu.

Co się wtedy stanie?

Podczas tworzenia nowego arkusza za pomocą metody Kopiuj:
  • Arkusz jest tworzony w żądanym miejscu (przed lub po innym arkuszu w skoroszycie)
  • Nazwa jest zmieniana na podstawie nazwy arkusza źródłowego. Przykład: Arkusz1 => Arkusz1 (2)
  • Jest identyczny z skopiowanym arkuszem.
  • Staje się aktywnym arkuszem. Jeśli arkusz zostanie skopiowany do nowego skoroszytu, staje się aktywnym skoroszytem.

Przykłady użycia

Skopiuj „Arkusz1” po „Arkuszu3”

 Arkusze robocze („Arkusz1”). Kopiuj po: = Arkusze („Arkusz3”) 

Skopiuj „Sheet4” przed „Sheet2”:

 Arkusze („Arkusz4”). Kopiuj przed: = Arkusze („Arkusz2”) 

Skopiuj arkusz „podsumowanie” w nowym skoroszycie

 Arkusze robocze („podsumowanie”). Kopiuj 

Skopiuj arkusz zindeksowany jako 1 na ostatniej pozycji skoroszytu, niezależnie od nazwy ostatniego arkusza:

 Arkusze (1). Kopiuj po: = Arkusze (arkusze) 

Skopiuj arkusz zindeksowany jako 10 na początku skoroszytu, niezależnie od nazwy ostatniego arkusza:

 Arkusze (10). Kopiuj przed: = Arkusze (1) 

Chcesz skopiować wiele arkuszy aktywnego skoroszytu do nowego skoroszytu:

 Arkusze (Array („Arkusz1”, „Arkusz3”, „Arkusz5”)). Kopiuj 

Metoda dodawania

Tworzy nowy arkusz kalkulacyjny (grafika lub makro). Nowy arkusz staje się aktywnym arkuszem.

Ten nowy arkusz nie zawiera żadnych danych ani formatowania.

Składnia

expression .Add ( Before, After, Count, Type )

Wyrażenie może być obiektem arkusza lub arkusza roboczego.

Parametry Przed, Po, Liczba i typ są opcjonalne.

Albo i wcześniej - możesz określić tylko jeden z tych parametrów. Są one typu Variant i mogą reprezentować lokalizację arkusza przed lub po tym, który chcesz skopiować.

Parametr Count jest również wariantem. Reprezentuje liczbę arkuszy, które chcesz dodać.

Parametr Typ reprezentuje typ arkusza, który chcesz dodać.

  • xlWorkSheet - dodaje arkusz
  • xlChart - dodaje arkusz wykresu
  • xlExcel4MacroSheet - dodaje arkusz makr (Excel4)
  • xlExcel4IntlMacroSheet - wyświetla arkusz makra
  • xlDialogSheet - dodaje arkusz dialogowy.

Uwaga: nie zapomnij zmienić nazwy parametrów lub składnia zwróci poniższy błąd:

 ActiveWorkbook.Sheets.Add Before: = Arkusze (Worksheets.Count),, 1, xlChart 

Przykłady użycia

Umieść arkusz po ostatnim arkuszu w skoroszycie:

 Arkusze.Dodaj po: = Arkusze robocze (arkusze kalkulacyjne) 

Dodaje trzy arkusze w „pierwszej pozycji” aktywnego skoroszytu:

 ActiveWorkbook.Sheets.Add Before: = Arkusze (1), Count: = 3 

Dodaje arkusz wykresu w skoroszycie o nazwie „Wbk18” (Otwórz!) Po arkuszu o nazwie „Arkusz4”

 WorkBooks ("Wbk18"). Sheets.Add After: = Arkusze ("Sheet4"), Wpisz: = xlChart 

Testowanie arkusza

Sprawdź, czy arkusz już istnieje w skoroszycie

 'Test si la feuille existe déjà Funkcja Feuil_Exist (strWbk As String, strWsh As String) Jako Boolean' Gestionnaire d'erreur On Error Resume Next '„Test” Feuil_Exist = (Skoroszyty (strWbk) .Sheets (strWsh) .Name = strWsh) Zakończ funkcję 

Sprawdź, czy nazwa pliku zawiera zabronione znaki

 'Test si la chaine contient un caractère à éviter Funkcja Valid_Name (strName As String, strChr As String) Jako Boolean Dim i As Byte, Tb_Car () As String, strProhib As String strProhib = ”/: *?” „|” 'Liste des caractères à éviter Tb_Car = Split (StrConv (strProhib, vbUnicode), Chr $ (0))' Boucle sur tous les caractères à éviter 'Nota: le -1 est dû au Split de la chaine par le séparateur Chr (0 ) 'En effet, la chaine se terminant par un Chr (0) il convient d'exclure ce dernier caractère For i = LBound (Tb_Car) To UBound (Tb_Car) - 1' Test si la chaîne contient un caractère prohibé If InStr (strName, Tb_Car (i))> 0 Wtedy 'Si oui: Zwróć False_Name = False' ET Retourne le caractère prohibé strChr = Tb_Car (i) Wyjście Funkcja End Jeśli Next i 'Si OK: Return True Valid_Name = True End Function 

Wywoływanie funkcji weryfikacji

Kod jest taki sam dla metody Kopiuj lub Dodaj.
 Sub Principale () Dim strNewName As String, strCara As String strNewName = "NewSheet" If Valid_Name (strNewName, strCara) = False Then MsgBox "Le nom:" & strNewName & "est invalide." & vbCrLf & _ "Un nom de feuille ne peut pas contenir le caractère:" & strCara, vbCritical Exit Sub end If If Feuil_Exist (ThisWorkbook.Name, strNewName) = True Then MsgBox "Le nom:" & strNewName & "est invalide. „ & vbCrLf & _ "Ce nom de feuille est déjà utilisé dans ce classeur.", vbCritical Exit Sub End Jeśli ThisWorkbook.Sheets.Add 'Ou: ThisWorkbook.Sheets ("Feuil1"). Copy After: = Sheets (Sheets.Count) ActiveSheet.Name = strNewName End Sub 

Kilka przydatnych wskazówek dla pakietu Office 2013

Office 2013 wprowadza dwie uzupełniające się metody do wcześniejszych:
  • Skopiuj zakres komórek do arkusza i wielu arkuszy
  • Metoda Add2 dla kolekcji obiektów Wykresów.

Skopiuj zakres komórki za pomocą metody FillAcrossSheets

Ta metoda jest dostępna tylko dla pakietu Office 2013. Chcesz skopiować zakres komórek z „Arkusz1” do „Arkusz3”, „Arkusz5” i „Arkusz7”.

 Arkusze = Array („Sheet3”, „Sheet5”, „Sheet7”) Arkusze (arkusze) .FillAcrossSheets Worksheets („Sheet1”). Range („A1: C5”) 

Parametrami tej metody są:

  • Zakres: wymagany
  • Typ: opcjonalny
  • xlFillWithAll: Skopiuj zawartość i formaty.
  • xlFillWithContents: Skopiuj zawartość.
  • xlFillWithFormats: Kopiowanie formatów.

Metoda Add2

Ta metoda jest dostępna tylko dla pakietu Office 2013. Ta metoda ma zastosowanie do kolekcji obiektów Wykresów i zwraca błąd „ Runtime ” podczas używania z obiektami Arkusze i Arkusze robocze. Nie więcej informacji na Microsoft.com z wyjątkiem składni:

expression .Add ( Before, After, Count, NewLayout )

Wyrażenie reprezentuje obiekt arkusza roboczego

Parametry są identyczne z metodą Add, po prostu zamień parametr Type na NewLayout. Jeśli opcja NewLayout ma wartość True, grafika jest wstawiana przy użyciu nowych reguł.

Poprzedni Artykuł Następny Artykuł

Najważniejsze Wskazówki