Simptomi
Kad izmantojat atrašanās vietas rekvizītu vai atrašanās vietu. vertikālu vai horizontālu lappušu pārtraukumu adrese Microsoft Visual Basic for Applications makro, iespējams, tiek parādīts šāds kļūdas ziņojums:
Izpildlaika kļūda "9": apakšraksts no diapazona
Cēlonis
Šī problēma var rasties, ja ir spēkā šādi nosacījumi:
-
Aktīvā šūna atrodas virs horizontālā lappuses pārtraukuma vai pa kreisi no vertikālā lappuses pārtraukuma, uz kuru atsaucas HPageBreaks vai VPageBreaks indekss.
-
Vertikālā vai horizontālā lappuses pārtraukuma vieta ir ārpus ekrāna pa labi no redzamā loga vai zem darbgrāmatas redzamā loga.
-
Programmā Microsoft Excel varat izmantot Visual Basic for Applications makro, kas līdzīgs šim kodam:
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
Risinājums
Microsoft nodrošina programmēšanas piemērus tikai ilustrācijai, bez izteiktas vai netiešas garantijas. Tas ietver, bet neaprobežojas ar netiešajām garantijām par piemērotību lietošanai vai atbilstību noteiktam nolūkam. Šajā rakstā ir pieņemts, ka esat iepazinies ar programmēšanas valodu, kas tiek parādīta, un rīkus, kas tiek izmantoti, lai izveidotu un atkļūdotu procedūras. Microsoft atbalsta inženieri var palīdzēt izskaidrot noteiktas procedūras funkcionalitāti, taču tie nemainīs šos piemērus, lai nodrošinātu papildu funkcionalitāti vai izveidotu procedūras, kas atbilst jūsu konkrētajām prasībām. Lai novērstu šo problēmu, pievienojiet kodu, lai atlasītu pēdējo darblapā izmantoto šūnu, pirms kods izmanto horizontālo vai vertikālo lappušu pārtraukumu atrašanās vietu . Piemēram, izmantojiet šādu kodu, lai atlasītu gala šūnu, izmantojiet rekvizītu atrašanās vieta un pēc tam vēlreiz atlasiet oriģinālo aktīvo šūnu:
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
Pēc atrašanās vietas rekvizīta aprēķināšanas varat atkārtoti atlasīt oriģinālo aktīvo šūnu. Ja izmantojat kodu, lai ritinātu starp pirmo un pēdējo šūnu, vai atlasiet pēdējo šūnu un pēc tam vēlreiz atlasiet sākuma šūnu, iespējams, kļūda joprojām pastāv. Lai risinājums būtu spēkā, ir jāmaina ekrāns, un rekvizītam Novietojums jābūt aprēķinātam. Ja izmantojat iepriekšminēto kodu ar
Application.ScreenUpdating = False
lai novērstu ekrāna atkārtotu zīmēšanu, problēma joprojām pastāv.
Statusa
Microsoft ir apstiprinājusi, ka šī problēma pastāv Microsoft produktos, kas ir norādīti sadaļā "attiecas uz".
Papildinformācija
Ja izmantojat funkciju Count ar rekvizītu VPageBreaks vai HPageBreaks , var tikt parādīts nulles rezultāts. Tas notiek sadaļā "iemesls" norādītajos nosacījumos. Ja lappuses pārtraukums ir redzams, funkcija Count var piešķirt pareizo atbildi. Ja lappuses pārtraukums atrodas tuvu darbgrāmatas loga redzamajai daļai, Sagaidāmais rezultāts var tikt parādīts kā vertikāls vai horizontālais lappuses pārtraukumus. Iepriekš norādīto risinājumu var izmantot, lai iegūtu paredzamo skaitu. Lappušu pārtraukumi, kas atrodas pa labi no darbgrāmatas loga vai zem darbgrāmatas loga, var iespējot skaitīšanas metodi darbam un ievietot lappuses pārtraukumu, ja attālums no loga līdz lappuses pārtraukumam ir mazāks par vienu pusi starp lappušu pārtraukumiem.
Atsauces
Lai iegūtu papildinformāciju par to, kā programmā makro veikt slazdošanas kļūdas, noklikšķiniet uz šī raksta numura, lai skatītu Microsoft zināšanu bāzes rakstu:
213637 Kā izmantot kļūdas ziņojumu, lai apstrādātu kļūdas makro