Sümptomid
Kui kasutate atribuuti Location või location. Microsoft Visual Standard for Applications makro vertikaalne või horisontaalne leheküljepiiride aadress, võidakse kuvada järgmine tõrketeade:
Run-time error "9": allindeks vahemikust väljas
Põhjus
See probleem võib ilmneda juhul, kui järgmised tingimused on täidetud.
-
Aktiivne lahter on horisontaalse leheküljepiiri kohal või vertikaalsest leheküljepiirist vasakul, millele viitab HPageBreaks või VPageBreaks indeks.
-
Lehe vertikaalne või horisontaalne leheküljepiir asub nähtaval aknast või töövihiku nähtavast aknast paremas servas.
-
Visual Standard for Applications makro Microsoft Excelis sarnaneb järgmise koodiga.
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
Lahendus
Microsoft pakub programmeerimise näiteid ainult illustreerimiseks, kuid mitte otseseid ega kaudseid. See hõlmab, kuid mitte ainult, kaudseid garantiisid kaubandusliku või sobivuse teatud otstarbeks. Selles artiklis eeldatakse, et olete kursis programmeerimiskeelega, mida näidatakse ning kus on kasutatud tööriistu, mida kasutatakse toimingute loomiseks ja silumiseks. Microsofti tugiteenuste insenerid aitavad selgitada konkreetse protseduuri funktsioone, kuid nad ei muuda neid näiteid, et lisada teie vajadustele vastavaid funktsioone või koostada toiminguid. Selle probleemi vältimiseks lisage kood, mis valib töölehel viimase lahtri, mida kasutati enne, kui kood kasutab horisontaalsete või vertikaalsete leheküljepiiride atribuuti Location . Näiteks kasutage lõpplahtri valimiseks järgmist koodi, kasutage atribuuti asukoht ja seejärel valige algne aktiivne lahter uuesti.
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
Kui atribuut Location on arvutatud, võite uuesti valida algse aktiivse lahtri. Kui kasutate esimesele ja viimasele lahtrile liikumiseks koodi, või valige viimane lahter ja seejärel uuesti lahtris oleva lahtri valimine, võib tõrge siiski ilmneda. Selleks, et lahendus oleks efektiivne, tuleb ekraan uuesti joonistada ja asukoha atribuut arvutada. Kui kasutate eespool toodud koodi
Application.ScreenUpdating = False
ekraani uuesti joonistamise vältimiseks ilmneb probleem endiselt.
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "kehtib järgmiste toodete kohta" loetletud Microsofti toodetes.
Lisateave
Kui kasutate meetodit Count koos atribuudiga VPageBreaks või HPageBreaks , võite saada nulliga tulemi. See toimub jaotises "põhjus" loetletud tingimuste all. Kui leheküljepiir on nähtaval, võib loendamise meetod anda õige vastuse. Vertikaalsete või horisontaalsete leheküljepiiride loendamise meetod võib anda oodatud tulemi, kui leheküljepiir on töövihiku akna nähtava osa lähedal. Varasemat lahendust saab kasutada oodatud arvu saamiseks. Leheküljepiirid, mis on töövihiku aknast paremal või selle all, võivad lubada loendamise viisi ja selle leheküljepiiri paigutada, kui akna kaugus leheküljepiirist on väiksem kui poolik kaugus leheküljepiiride vahel.
Viited
Makros olevate tõrgete kohta lisateabe saamiseks klõpsake Microsofti teabebaasi (Knowledge Base) artikli kuvamiseks järgmist artiklinumbrit:
213637 Tõrkest "viga" kasutamine makros vigadega tegelemiseks