Sintomas

Quando você usa a propriedade Location ou Location. Address de quebras de página verticais ou horizontais em uma macro do Microsoft Visual Basic for Applications, você pode receber a seguinte mensagem de erro:

Erro em tempo de execução ' 9 ': subscrito fora do intervalo

Causa

Esse problema pode ocorrer se as seguintes condições forem verdadeiras:

  • A célula ativa está acima da quebra de página horizontal ou à esquerda da quebra de página vertical referida pelo índice HPageBreaks ou VPageBreaks .

  • O local da quebra de página vertical ou horizontal está fora da tela à direita da janela visível ou abaixo da janela visível da pasta de trabalho.

  • Você usa uma macro do Visual Basic for Applications no Microsoft Excel semelhante ao código a seguir:

    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

Solução alternativa

A Microsoft fornece exemplos de programação somente para ilustração, sem garantia expressa ou implícita. Isso inclui, entre outros, as garantias implícitas de comercialização ou adequação a uma finalidade específica. Este artigo pressupõe que você esteja familiarizado com a linguagem de programação que está sendo demonstrada e com as ferramentas usadas para criar e depurar procedimentos. Os engenheiros de suporte da Microsoft podem ajudar a explicar a funcionalidade de um procedimento específico, mas eles não modificarão esses exemplos para fornecer funcionalidade adicional ou construir procedimentos para atender a seus requisitos específicos. Para evitar esse problema, adicione código para selecionar a última célula usada na planilha antes de o código usar a propriedade Location de quebras de página horizontais ou verticais. Por exemplo, use o código a seguir para selecionar a célula final, use a propriedade Location e, em seguida, selecione novamente a célula ativa original:

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

Depois que a propriedade Location for calculada, você poderá selecionar novamente a célula ativa original. Se você usar o código para rolar entre a primeira e a última célula ou selecionar a última célula e imediatamente selecionar novamente a célula inicial, o erro ainda poderá ocorrer. A tela deve ser redesenhada e a propriedade Location ser calculada para que a solução alternativa seja efetiva. Se você usar o código acima com

Application.ScreenUpdating = False

para evitar a redesenho de tela, o problema ainda ocorre.

Status

A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".

Informações adicionais

Se você usar o método cont com a propriedade VPageBreaks ou HPageBreaks , você pode receber um resultado de zero. Isso ocorre nas condições listadas na seção "causa". Se uma quebra de página estiver visível, o método Count poderá dar a resposta correta. O método Count para quebras de página horizontais ou verticais pode dar o resultado esperado se uma quebra de página estiver próxima à parte visível da janela da pasta de trabalho. A solução alternativa fornecida anteriormente pode ser usada para obter a contagem esperada. Quebras de página à direita da janela da pasta de trabalho ou abaixo da janela da pasta de trabalho podem permitir que o método de contagem funcione e que a quebra de página seja localizada, se a distância da janela para a quebra de página for inferior à metade da distância entre quebras de página.

Referências

Para obter mais informações sobre como interceptar erros em uma macro, clique no número abaixo para ler o artigo na base de dados de conhecimento da Microsoft:

213637 Como usar "On Error" para manipular erros em uma macro

Precisa de mais ajuda?

Expanda suas habilidades
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar no Microsoft Insider

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?

Obrigado pelos seus comentários!

×