Sheets.Add, czy WorkSheets.Add?
Nowy arkusz można dodawać przyciskając + na końcu listy arkuszy w skoroszycie. Jednak tworząc makra często musimy zaimplementować polecenie, które doda nowy arkusz, aby móc zamieścić w nim nowe dane. Typowym przykładem jest stworzenie tabeli przestawnej, którą Excel domyślnie wstawia do nowego arkusza.
Aby dodać nowy obiekt (w tym wypadku arkusz) należy odwołać się do jego kolekcji. Mamy dostępną kolekcję arkuszy roboczych (Worksheets), kolekcję wykresów (Charts), oraz kolekcję, która reprezentuje obie te grupy (Sheets). Jeżeli nie mam pewności to najlepiej odwołać się do kolekcji Sheets i wybrać polecenie Add.
Metoda Sheets.Add nie wymaga podawania żadnych argumentów i jeśli użyjemy jej w takiej prostej formie, to nowy arkusz typu roboczego (Worksheet) pojawi się przed aktywnym arkuszem.
Argumenty metody Add
Sheets.Add posiada 4 argumenty. Pierwszy z nich to Before, który pozwala na wskazanie arkusza, przed którym program wstawi nowy arkusz. Jeśli chodzi o wskazanie tego arkusza, to mogę to zrobić za pomocą nazwy, albo indeksu. Częstym przypadkiem jest dodawanie nowego arkusza na początku i takie polecenie będzie wyglądało w ten sposób.
Drugi argument to After, który dodaje arkusz, po wskazanym jako wartość tego argumentu. Tych argumentów używamy zamiennie.
Jeśli chcę dodać nowy arkusz na samym końcu wystarczy policzyć ile jest wszystkich arkuszy i użyć tej wartości jako indeksu w kolekcji Sheets.
Trzeci argument to Count, który domyślnie przyjmuje wartość 1, ale jeśli wprowadzę tam inną liczbę, to polecenie doda dokładnie tyle arkuszy.
Efekt jednak jest taki, że arkusze nie są dodawane kolejno po sobie i jeśli korzystamy z domyślnych nazw nadawanych przez Excel, to musimy te arkusze poprzestawiać.
W przypadku dodawania kilku arkuszy można się pokusić o pętlę, która doda arkusze po kolei. Dzięki temu zostanie zachowana kolejność nadawania nazw nowym arkuszom.
Ostatni argument to Type i jest on odpowiedzialny za rodzaj dodanego arkusza. Domyślnym typem jest Worksheet, czyli arkusz roboczy z komórkami. Taki arkusz pojawia się również po kliknięciu w znak + przy liście arkuszy. Jeśli jednak wybierzemy z menu kontekstowego arkusza polecenie Wstaw… to pojawi się lista dostępnych typów arkuszy do wstawienia.
Argument Type pozwala na wybranie jednego z tych typów i przyjmuje wartości xlWorksheet, xlChart, xlExcel4MacroSheet, xlExcel4IntlMacroSheet, lub xlDialogSheet.
Jak nadać arkuszowi nazwę?
Nowo dodany arkusz mogę z łatwością nazwać wykorzystując jego własność Name, oraz fakt, że nowy arkusz automatycznie staje się aktywny.
Mogę też nadać nazwę podczas dodawania arkusza i ograniczyć te dwa polecenia do jednego. Wystarczy po poleceniu Sheets.Add dodać kropkę i odwołać się do własności Name.
Co jednak w przypadku, kiedy wykorzystuję argumenty metody Add i chcę jednocześnie nadać nazwę dodawanego arkusza?
Taki zapis jest błędny i przy próbie wykonania tej linijki kodu pojawi się błąd. W takim wypadku pomaga objęcie argumentów metody nawiasami.