Symptomy

Po użyciu właściwości Lokalizacja lub lokalizacji. adres pionowych lub poziomych podziałów stron w makrze programu Microsoft Visual Basic for Applications może zostać wyświetlony następujący komunikat o błędzie:

Błąd wykonania "9": indeks dolny jest poza zakresem

Przyczyna

Ten problem może wystąpić, jeśli są spełnione następujące warunki:

  • Aktywna komórka znajduje się nad poziomym podziałem strony lub po lewej stronie pionowego podziału strony, do którego odwołuje się indeks HPageBreaks lub VPageBreaks .

  • Pionowa lub pozioma lokalizacja podziału strony znajduje się poza ekranem po prawej stronie widocznego okna lub pod widocznym oknem skoroszytu.

  • W programie Microsoft Excel jest używane makro w języku Visual Basic for Applications podobne do następującego kodu:

    Sub TestHorizontal()    ActiveSheet.Range("CZ1000").Value = 1    MsgBox ActiveSheet.HPageBreaks.Count    MsgBox ActiveSheet.HPageBreaks(1).Location.Address    MsgBox ActiveSheet.HPageBreaks(2).Location.AddressEnd Sub Sub TestVertical()    ActiveSheet.Range("CZ1000").Value = 1    MsgBox ActiveSheet.VPageBreaks.Count    MsgBox ActiveSheet.VPageBreaks(1).Location.Address    MsgBox ActiveSheet.VPageBreaks(2).Location.Address    MsgBox ActiveSheet.VPageBreaks(3).Location.AddressEnd Sub

Obejście

Firma Microsoft podaje przykłady programowania wyłącznie do celów informacyjnych, bez jakichkolwiek gwarancji wyrażonych wprost lub domyślnie. Dotyczy to także, ale nie ograniczając się do tego zapisu, gwarancji przydatności handlowej lub do określonego celu. W tym artykule zakłada się, że czytelnik zna prezentowany język programowania oraz narzędzia używane do tworzenia i debugowania procedur. Wykwalifikowani pracownicy pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu, jak działa określona procedura, ale nie będą modyfikować tych przykładów ani dodawać żadnych funkcji i konstruować nowych procedur w celu dostosowania ich do określonych potrzeb użytkownika. Aby zapobiec temu problemowi, Dodaj kod, aby zaznaczyć ostatnią komórkę użytą w arkuszu, zanim kod użyje właściwości Location w poziomie lub pionowym podziałach stron. Na przykład użyj poniższego kodu, aby zaznaczyć komórkę końcową, użyj właściwości Location , a następnie ponownie wybierz oryginalną komórkę aktywną:

Sub CheckPageBreaks()    'Set object "currcell" equal to active cell.    Set currcell = ActiveCell        'Select the last cell on the worksheet that has data.    Range("IV65536").Select        'Include code with Location property here.    x = ActiveSheet.HPageBreaks(2).Location.Address    MsgBox x    'Example sets x equal to address of second horizontal page break.    'Then message box displays the address of the page break.        'Select original active cell.    currcell.SelectEnd Sub

Po obliczeniu właściwości Lokalizacja można ponownie zaznaczyć oryginalną komórkę aktywną. Jeśli użyjesz kodu do przewinięcia między pierwszą a ostatnią komórką lub zaznaczysz ostatnią komórkę i natychmiast wybierzesz komórkę początkową, błąd może nadal wystąpić. Aby obejście było skuteczne, należy ponownie wyrysować ekran i obliczyć Właściwość lokalizacji . Jeśli powyższy kod jest używany z

Application.ScreenUpdating = False

Aby zapobiec ponownemu rysowaniu ekranu, problem wciąż występuje.

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".

Więcej informacji

Jeśli użyjesz metody Count z właściwością VPageBreaks lub HPageBreaks , może zostać wyświetlony wynik zero. Dzieje się tak w warunkach wymienionych w sekcji "Przyczyna". Jeśli podział strony jest widoczny, Metoda zliczania może zawierać prawidłową odpowiedź. Jeśli podział strony znajduje się blisko widocznej części okna skoroszytu, Metoda zliczania pionowych lub poziomych podziałów stron może dawać oczekiwany wynik. Obejście podane wcześniej można wykorzystać w celu uzyskania oczekiwanej liczby. Podziały stron, które znajdują się po prawej stronie okna skoroszytu lub poniżej okna skoroszytu, mogą umożliwić działanie metody Count i podziału strony, jeśli odległość od okna do podziału strony jest mniejsza niż jedna połowa odległości między podziałami stron.

Informacje

Aby uzyskać więcej informacji na temat sposobu zalewkowania błędów w makrze, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

213637 Jak używać "On Error" do obsługi błędów w makrze

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.