VBA ThisWorkbook

Excel VBA ThisWorkbook

VBA ThisWorkbook oznacza skoroszyt, w którym piszemy kod Excela. Na przykład, jeśli pracujesz w skoroszycie o nazwie „Sprzedaż 2019.xlsx”, zwykle odnosimy się do skoroszytu w ten sposób.

Skoroszyty („Sales 2019.xlsx”). Aktywuj

Kod aktywuje skoroszyt o nazwie „Sales 2019.xlsx”.

Zamiast pisać w ten sposób, możemy po prostu napisać poniższy kod VBA.

ThisWorkbook.Activate '

Tutaj ThisWorkbook odnosi się do skoroszytu, w którym piszemy kod. Odwołując się do tego słowa, możemy wykonać wszystkie zadania w bieżącym skoroszycie i uniknąć długiego kodu z pełną nazwą skoroszytu.

Jestem pewien, że musieliście również widzieć słowo „aktywny skoroszyt”, kiedy odnosiliście się do kodu innych osób. Jest to również jedno z często używanych słów w kodowaniu. Zobaczymy, jakie są różnice między tymi dwoma słowami w podstawowym.

Praca z ThisWorkbook w Excel VBA

Słowo odniesienia „ThisWorkbook” jest bardziej niezawodne niż kwalifikator obiektu Workbooks. Jedną z ludzkich tendencji jest błędne wpisywanie nazwy skoroszytu, co skutkuje wyświetleniem komunikatu o błędzie.

Jeszcze jeden ważny powód, dla którego VBA ThisWorkbook jest bardziej niezawodny, ponieważ na wszelki wypadek, jeśli zmienimy nazwę skoroszytu, musimy zmienić kod, ponieważ użyliśmy słowa „ThisWorkbook”.

Tak więc ThisWorkbook jest bezpieczniejszy w użyciu w odniesieniu do skoroszytu, w którym piszemy kod.

Możesz pobrać ten szablon VBA ThisWorkbook Excel tutaj - Szablon VBA ThisWorkbook Excel

Przykład 1

Zobaczymy kilka przykładów, w których możemy użyć słowa ThisWorkbook w Excel VBA. Poniższy kod wydrukuje nazwę skoroszytu.

Kod:

 Sub TWB_Example1 () Dim WBName As String WBName = ThisWorkbook.Name MsgBox WBName End Sub 

Gdy uruchomisz kod ręcznie lub za pomocą klawisza F5, powyższy kod pokaże nazwę skoroszytu w oknie komunikatu w VBA.

Przykład nr 2

Zamiast używać słowa „ten skoroszyt”, możemy użyć zmiennych, aby ustawić odwołanie do skoroszytu, a nawet drastycznie zmniejszyć długość kodu w VBA. Na przykład spójrz najpierw na poniższy kod.

Kod:

 Sub TWB_Example2 () ThisWorkbook.Activate ThisWorkbook.Worksheets ("Sheet1"). Activate ThisWorkbook.Save ThisWorkbook.Close ThisWorkbook.SaveAs End Sub 

Powyższy kod zawiera tekst „ThisWorkbook” w każdym wierszu kodu. Jak trudno jest wpisać to słowo za każdym razem. Możemy więc to zminimalizować, używając zmiennych.

Teraz spójrz na poniższy kod ze zmienną.

Kod:

 Sub TWB_Example2 () Dim Wb As Workbook Set Wb = ThisWorkbook Wb.Activate Wb.Worksheets ("Sheet1"). Activate Wb.Save Wb.Close Wb.SaveAs End Sub 

Wygląda pięknie, prawda?

Pozwólcie, że wyjaśnię wam kod.

Najpierw zadeklarowałem zmienną jako obiekt skoroszytu.

Przyciemnij Wb jako skoroszyt

Ponieważ jest to zmienna obiektowa, musimy ustawić odniesienie do konkretnego skoroszytu. Więc użyłem odnośnika „ThisWorkbook”.

Ustaw Wb = ThisWorkbook

Teraz zmienna „Wb” odwołuje się do skoroszytu, w którym aktualnie piszemy kod. Odtąd kontynuując procedurę, nie musimy używać słowa „ThisWorkbook” zamiast tego możemy użyć zmiennej „Wb”

Active Workbook vs ThisWorkbook w Excel VBA

Jak powiedziałem na początku artykułu, wielu programistów bardzo często używa słów Active Workbook i ThisWorkbook w swoim kodowaniu VBA. Czytelnikowi lub nowicjuszowi nie jest łatwo zrozumieć te dwie rzeczy. Pozwólcie, że wyjaśnię wam niektóre różnice.

Różnica nr 1: znaczenie

  • Active Workbook: Active Workbook niekoniecznie jest skoroszytem, ​​w którym obecnie piszemy kod. Jeśli masz wiele otwartych skoroszytów i którykolwiek skoroszyt jest widoczny na ekranie, jest uważany za aktywny skoroszyt .
  • ThisWorkbook: ThisWorkbook jest zawsze skoroszytem, ​​w którym obecnie piszemy kod.

Różnica 2: Szanse na błędy

  • Aktywny skoroszyt: Używanie Active w kodowaniu może prowadzić do wielu błędów i nieporozumień, ponieważ nigdy nie wiemy, który skoroszyt jest aktywny, chyba że wyraźnie wspomnimy o skoroszycie do aktywacji przed użyciem słowa Aktywny skoroszyt.
  • ThisWorkbook: ThisWorkbook nie może się nie udać, ponieważ nie ma znaczenia, który skoroszyt jest aktywny, zawsze pobiera odwołanie do skoroszytu, w którym piszemy kod.