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