Viene visualizzato un messaggio di errore "Pedice fuori intervallo" quando si usa HPageBreaks o VPageBreaks.Location in Excel

Sintomi

Quando si usa la proprietà Location o Location.Address delle interruzioni di pagina verticali o orizzontali in una macro di Microsoft Visual Basic, Applications Edition, è possibile che venga visualizzato il messaggio di errore seguente:

Nota

Errore di runtime '9':
Pedice fuori dall'intervallo

Causa

Questo problema può verificarsi se si verificano le condizioni seguenti:

  • La cella attiva si trova sopra l'interruzione di pagina orizzontale o a sinistra dell'interruzione di pagina verticale a cui fa riferimento l'indice HPageBreaks o VPageBreaks.

  • La posizione dell'interruzione di pagina verticale o orizzontale è fuori dallo schermo a destra della finestra visibile o sotto la finestra visibile della cartella di lavoro.

  • Si usa una macro di Visual Basic, Applications Edition in Microsoft Excel simile al codice seguente:

    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
    
    

Soluzione alternativa

Microsoft fornisce esempi di programmazione a titolo puramente illustrativo, senza alcuna garanzia espressa o implicita. Ciò include, a titolo esemplificativo e non esaustivo, le garanzie implicite di commerciabilità o idoneità a uno scopo particolare. Questo articolo presuppone che si abbia familiarità con il linguaggio di programmazione oggetto della dimostrazione e con gli strumenti utilizzati per la creazione e il debug delle procedure. I tecnici del supporto Tecnico Microsoft possono spiegare le funzionalità di una particolare procedura, ma non modificarli per fornire funzionalità aggiuntive o creare procedure in base a specifici requisiti.
Per evitare questo problema, aggiungere codice per selezionare l'ultima cella usata nel foglio di lavoro prima che il codice usi la proprietà Location delle interruzioni di pagina orizzontali o verticali. Ad esempio, usare il codice seguente per selezionare la cella finale, usare la proprietà Location e quindi deselezionare di nuovo la cella attiva originale:

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

Dopo aver calcolato la proprietà Location, è possibile selezionare di nuovo la cella attiva originale. Se si usa il codice per scorrere tra la prima e l'ultima cella o selezionare l'ultima cella e selezionare di nuovo immediatamente la cella iniziale, l'errore potrebbe comunque verificarsi. La schermata deve essere ridisegna e la proprietà Location deve essere calcolata affinché la soluzione alternativa sia efficace. Se usi il codice precedente con

Application.ScreenUpdating = False

per impedire il ridisegno dello schermo, il problema persiste.

Stato

Microsoft ha confermato che si tratta di un problema relativo ai prodotti elencati nella sezione "Si applica a".

Altre informazioni

Se si usa il metodo Count con la proprietà VPageBreaks o HPageBreaks, è possibile che venga restituito zero. Ciò si verifica nelle condizioni elencate nella sezione "Causa". Se è visibile un'interruzione di pagina, il metodo Count può fornire la risposta corretta. Il metodo Count per le interruzioni di pagina verticali o orizzontali può fornire il risultato previsto se un'interruzione di pagina è vicina alla parte visibile della finestra della cartella di lavoro. La soluzione alternativa fornita in precedenza può essere usata per ottenere il conteggio previsto.

Le interruzioni di pagina a destra della finestra della cartella di lavoro o sotto la finestra della cartella di lavoro possono consentire il funzionamento del metodo Count e la posizione dell'interruzione di pagina, se la distanza tra la finestra e l'interruzione di pagina è inferiore alla metà della distanza tra le interruzioni di pagina.

Riferimenti

Per altre informazioni su come intrappolare errori in una macro, fare clic sul numero dell'articolo seguente per visualizzare l'articolo della Microsoft Knowledge Base:

213637 Come usare "Su errore" per gestire gli errori in una macro