Felmeddelandet "Nedsänkt utom räckhåll" visas när du använder HPageBreaks eller VPageBreaks.Location i Excel

Symptom

När du använder egenskapen Plats eller Plats.Adress för lodräta eller vågräta sidbrytningar i ett Microsoft Visual Basic for Applications-makro kan du få följande felmeddelande:

Obs

Körningsfel 9:
Nedsänkt text utom räckhåll

Orsak

Det här problemet kan uppstå om följande villkor uppfylls:

  • Den aktiva cellen ligger ovanför den vågräta sidbrytningen eller till vänster om den lodräta sidbrytning som HPageBreaks- eller VPageBreaks-indexet refererar till.

  • Den lodräta eller vågräta sidbrytningen visas utanför skärmen till höger om det synliga fönstret eller under arbetsbokens synliga fönster.

  • Du använder ett Visual Basic for Applications-makro i Microsoft Excel som liknar följande 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
    
    

Lösning

Microsoft tillhandahåller endast programmeringsexempel i visningssyfte, utan att någon form av garanti uttrycks eller är underförstådd. Detta omfattar men är inte begränsat till underförstådda garantier för säljbarhet eller lämplighet för ett visst ändamål. Den här artikeln förutsätter att du är bekant med programmeringsspråket som demonstreras och med de verktyg som används för att skapa och felsöka procedurer. Microsofts supporttekniker kan hjälpa till att förklara funktionaliteten i en viss procedur, men de ändrar inte de här exemplen för att tillhandahålla ytterligare funktioner eller konstruera procedurer för att uppfylla dina specifika krav.
Du kan förhindra det här problemet genom att lägga till kod för att markera den sista cellen som används i kalkylbladet innan koden använder egenskapen Plats för vågräta eller lodräta sidbrytningar. Använd till exempel följande kod för att markera slutcellen, använda egenskapen Plats och sedan avmarkera den ursprungliga aktiva cellen:

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

När egenskapen Plats har beräknats kan du markera den ursprungliga aktiva cellen igen. Om du använder kod för att bläddra mellan den första och sista cellen, eller markerar den sista cellen och omedelbart avmarkerar startcellen, kan felet fortfarande uppstå. Skärmen måste ritas om och egenskapen Plats beräknas för att lösningen ska fungera. Om du använder koden ovan med

Application.ScreenUpdating = False

för att förhindra att skärmen ritas om kvarstår problemet.

Status

Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".

Mer information

Om du använder metoden Antal med egenskapen VPageBreaks eller HPageBreaks kan du få resultatet noll. Detta inträffar under de förhållanden som anges i avsnittet "Orsak". Om en sidbrytning visas kan metoden Antal ge rätt svar. Metoden Antal för lodräta eller vågräta sidbrytningar kan ge det förväntade resultatet om en sidbrytning ligger nära den synliga delen av arbetsboksfönstret. Den lösning som angavs tidigare kan användas för att få det förväntade antalet.

Sidbrytningar som finns till höger om arbetsboksfönstret eller under arbetsboksfönstret kan göra att metoden Antal kan fungera och att sidbrytningen ska finnas, om avståndet från fönstret till sidbrytningen är mindre än hälften av avståndet mellan sidbrytningarna.

Referenser

Om du vill ha mer information om hur du fångar fel i ett makro klickar du på följande artikelnummer för att visa artikeln i Microsoft Knowledge Base:

213637 Så här använder du "Vid fel" för att hantera fel i ett makro