Príznaky
Keď použijete vlastnosť Umiestnenie alebo Adresa.Adresa zvislých alebo vodorovných zlomov strán v makre Microsoft Visual Basic for Applications, môže sa zobraziť nasledujúce chybové hlásenie:
Poznámka
Chyba 9 počas runtime:
Dolný index mimo rozsahu
Príčina
Tento problém sa môže vyskytnúť, ak sú splnené nasledujúce podmienky:
Aktívna bunka sa nachádza nad vodorovným zlomom strany alebo naľavo od zvislého zlomu strany, na ktorý odkazuje index HPageBreaks alebo VPageBreaks.
Umiestnenie zvislého alebo vodorovného zlomu strany sa nachádza mimo obrazovky napravo od viditeľného okna alebo pod viditeľným oknom zošita.
V Microsoft Exceli použite makro Visual Basic for Applications podobné nasledujúcemu kódu:
Sub TestHorizontal() ActiveSheet.Range("CZ1000").Value = 1 MsgBox ActiveSheet.HPageBreaks.Count MsgBox ActiveSheet.HPageBreaks(1).Location.Address MsgBox ActiveSheet.HPageBreaks(2).Location.Address End 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.Address End Sub
Alternatívne riešenie
Spoločnosť Microsoft poskytuje príklady programovania len pre ilustráciu bez výslovnej alebo implicitnej záruky. To sa týka (okrem iného) aj implicitných záruk obchodovateľnosti alebo vhodnosti na konkrétny účel. Článok predpokladá, že poznáte predvádzaný programovací jazyk a nástroje, ktoré sa používajú na vytváranie a ladenie procedúr. Pracovníci technickej podpory spoločnosti Microsoft vám môžu pomôcť vysvetliť funkčnosť konkrétneho postupu, tieto príklady však nebudú upravovať, aby poskytovali ďalšie funkcie alebo zostavili procedúry podľa vašich špecifických požiadaviek.
Ak chcete predísť tomuto problému, pridajte kód a vyberte poslednú bunku použitú v hárku predtým, než kód použije vlastnosť Umiestnenie pre vodorovné alebo zvislé zlomy strán. Pomocou nasledovného kódu vyberte napríklad koncovú bunku, použite vlastnosť Umiestnenie a potom znova vyberte pôvodnú aktívnu bunku:
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.Select
End Sub
Po vypočítaní vlastnosti Miesto môžete znova vybrať pôvodnú aktívnu bunku. Ak použijete kód na posúvanie medzi prvou a poslednou bunkou alebo vyberiete poslednú bunku a okamžite znova vyberiete počiatočnú bunku, chyba sa môže vyskytovať aj napriek tomu. Aby bolo alternatívne riešenie účinné, musí obrazovka prekresliť a vypočítať vlastnosť Miesto. Ak použijete vyššie uvedený kód s
Application.ScreenUpdating = False
Problém sa vyskytuje aj naďalej, aby sa zabránilo prekresľovaniu obrazovky.
Stav
Spoločnosť Microsoft potvrdila, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v časti Vzťahuje sa na.
Ďalšie informácie
Ak použijete metódu Count s vlastnosťou VPageBreaks alebo HPageBreaks, môže sa zobraziť výsledok nula. Stáva sa to za podmienok uvedených v časti Príčina. Ak sa zlom strany zobrazuje, metóda počítania môže vrátiť správnu odpoveď. Metóda spočítania pre zvislé alebo vodorovné zlomy strán môže poskytnúť očakávaný výsledok, ak sa zlom strany nachádza v blízkosti viditeľnej časti okna zošita. Na získanie očakávaného počtu možno použiť alternatívne riešenie uvedené vyššie.
Zlomy strán, ktoré sa nachádzajú napravo od okna zošita alebo pod oknom zošita, môžu umožniť fungovanie metódy počítania a umiestnenie zlomu strany, ak je vzdialenosť medzi oknom a zlomom strany menšia ako polovica vzdialenosti medzi zlomami strán.
Odkazy
Ďalšie informácie o zachytávaní chýb v makre sa nachádzajú v nasledujúcom článku databázy Microsoft Knowledge Base:
213637 Používanie funkcie Pri chybe na spracovanie chýb v makre