Zdarzenia WorkBooka - nie zapisuj z zamrożonymi panelami - przykłady kodu VBA

Zablokuj okienka za pomocą VBA

Niedawno pisałem na temat zamrażania okienek w programie Excel, oto jak możesz to zrobić za pomocą VBA:

Zamroź rzędy

 Wiersze("1:1").Wybierz ActiveWindow.FreezePanes = True 

Zamroź kolumny

 Zakres("A:A").Wybierz ActiveWindow.FreezePanes = True

Zablokuj wiersze i kolumny

 Zakres("B2").Wybierz ActiveWindow.FreezePanes = True

Odblokuj szyby

 ActiveWindow.FreezePanes = Fałsz 

Wymuś zapisanie skoroszytu bez blokowania okien

Excel pozwala nam kontrolować rzeczy poprzez zdarzenia. Ten artykuł nie jest szczegółową dyskusją na temat wydarzeń ani ich funkcji. Zamiast tego podaje przykład zdarzenia WorkBook. Są to wydarzenia, które odbywają się na poziomie skoroszytu, a nie w konkretnym arkuszu.

Dzięki VBA możemy kontrolować, co dzieje się w określonych zdarzeniach, na przykład przed wydrukiem lub przed zapisaniem. Jednym z powszechnych problemów, z którymi się borykam, jest to, że wiele osób, z którymi pracuję, nie lubi plików z zamrożonymi okienkami.

W tym artykule ułożymy kod, który sprawdzi, czy Freeze Panes jest włączony, a jeśli tak, nie zapisze pliku. Oznacza to, że muszę go zapisać bez przymarzniętych szyb - uszczęśliwiając moich kolegów !!

Najważniejszą rzeczą w zdarzeniach skoroszytu jest to, aby były zapisywane we właściwym miejscu - na poziomie skoroszytu.

Aby uzyskać dostęp do poziomu skoroszytu, wykonaj poniższe czynności:

1. Kliknij prawym przyciskiem myszy skoroszyt programu Excel - wyświetl kod:

2. Spowoduje to:

3. Kliknij dwukrotnie „Ten skoroszyt”, a następnie wybierz „WorkBook” z pierwszego menu rozwijanego po lewej stronie:

Widzimy, że wartość po lewej stronie zmieniła się teraz na „Otwórz” – z pewnym kodem dla zdarzenia Workbook Open. Ten kod pozwoli nam określić, co się stanie, gdy skoroszyt zostanie otwarty po raz pierwszy.

Jednak chcemy kontrolować, co się stanie, gdy zapiszemy skoroszyt. Zmień więc rozwijaną prawą rękę na „Przed zapisaniem” . Ekran będzie teraz wyglądał tak:

Wstawiamy teraz następujący kod po deklaracji:

Jeśli ActiveWindow.FreezePanes = True Then MsgBox „Zamrażanie okienek jest włączone - plik NIE JEST ZAPISANY” Anuluj = True End If

Tak więc cały kod wygląda teraz tak:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If ActiveWindow.FreezePanes = True Then MsgBox "Zamrażanie okienek jest włączone - plik NIE JEST ZAPISANY" Cancel = True End If End Sub

Teraz zapisz plik, a NASTĘPNIE aktywuj zamrożone okienka w dowolnym oknie. Następnie - ZAPISZ plik. Pojawi się komunikat msgbox z informacją, że „Zamrożenie okienek” jest włączone – a plik nie jest zapisany.

Rzeczywiście, plik nie zostanie zapisany, dopóki zamrożone okienka nie zostaną usunięte.

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave