Gaunate klaidos pranešimą "Apatinis indeksas nepatenka į diapazoną", kai naudojate HPageBreaks arba VPageBreaks.Location programoje "Excel"

Požymiai

Kai naudojate "„Microsoft“ Visual Basic for Applications" makrokomandoje esantį vertikalų arba horizontalų puslapio lūžį Location (vieta) arba vertikalių arba horizontalių puslapių lūžių vietą.adresą, galite gauti šį klaidos pranešimą:

Pastaba

Vykdymo klaida "9":
Apatinis indeksas nepatenka į diapazoną

Priežastis

Ši problema gali kilti, jei atitinkamos toliau išvardytos sąlygos.

  • Aktyvus langelis yra virš horizontalaus puslapio lūžio arba kairėje vertikalaus puslapio lūžio, kurį nurodo HPageBreaks arba VPageBreaks indeksas.

  • Vertikalaus arba horizontalaus puslapio lūžio vieta yra už ekrano, į dešinę nuo matomo lango arba po matomu darbaknygės langu.

  • Programoje "Microsoft Excel" naudojate "Visual Basic for Applications" makrokomandą, panašią į šią kodą:

    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
    
    

Sprendimo būdas

"„Microsoft“" pateikia programavimo pavyzdžių tik iliustracijai, be išreikštų ar numanomų garantijų. Tai apima, bet neapsiriboja, numanomas tinkamumo parduoti arba tinkamumo konkrečiam tikslui garantijas. Straipsnyje laikomasi nuomonės, kad esate susipažinę su demonstruojama programavimo kalba ir įrankiais, naudojamais kuriant ir derinant procedūras. "„Microsoft“" palaikymo inžinieriai gali padėti paaiškinti konkrečios procedūros funkcionalumą, bet jie nemodifikuos šių pavyzdžių, kad suteiktų papildomų funkcinių galimybių, ir nesukurs procedūrų, atitinkančių jūsų konkrečius reikalavimus.
Norėdami išvengti šios problemos, pridėkite kodą, kad pasirinktumėte paskutinį darbalapio langelį prieš kode naudojant horizontalių arba vertikalių puslapių lūžių ypatybę Vieta. Pavyzdžiui, naudodami šį kodą pažymėkite pabaigos langelį, naudokite ypatybę Vieta, tada iš naujo pažymėkite pradinį aktyvų langelį:

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

Apskaičiavę ypatybę Vieta, galėsite dar kartą pasirinkti pradinį aktyvų langelį. Jei naudosite kodą slinkdami tarp pirmo ir paskutinio langelio arba pažymėsite paskutinį langelį ir nedelsdami iš naujo pasirinksite pradinį langelį, klaida vis tiek gali įvykti. Kad sprendimas būtų efektyvus, ekraną reikia perbraižyti ir apskaičiuoti ypatybę Vieta. Jei anksčiau pateiktą kodą naudojate su

Application.ScreenUpdating = False

Siekiant išvengti ekrano perbraižymo, problema vis tiek išlieka.

Būsena

„„Microsoft““ patvirtino, kad tai yra „„Microsoft““ produktų, išvardytų dalyje „Taikoma“, problema.

Daugiau informacijos

Jei naudojate metodą Count su ypatybėmis VPageBreaks arba HPageBreaks, galite gauti rezultatą nulį. Tai įvyksta esant sąlygoms, išvardytoms skyriuje "Priežastis". Jei matomas puslapio lūžis, skaičiavimo metodas gali pateikti teisingą atsakymą. Vertikalių arba horizontalių puslapių lūžių skaičiavimo metodas gali duoti laukiamą rezultatą, jei puslapio lūžis yra šalia matomos darbaknygės lango dalies. Anksčiau pateiktas sprendimo būdas gali būti naudojamas norint gauti numatomą skaičių.

Puslapių lūžiai, esantys darbaknygės lango dešinėje arba po darbaknygės langu, gali įgalinti skaičiavimo metodą ir rasti tą puslapio lūžį, jei atstumas nuo lango iki puslapio lūžio yra mažesnis nei pusė atstumo tarp puslapių lūžių.

Nuorodos

Norėdami gauti daugiau informacijos, kaip užfiksuoti makrokomandos klaidas, spustelėkite toliau nurodytą straipsnio numerį ir peržiūrėkite "Microsoft" žinių bazės straipsnį:

213637 Kaip naudoti klaidą makrokomandos klaidoms tvarkyti