Artigo: 108518 - Última revisão: terça-feira, 10 de Outubro de 2006 - Revisão: 2.2

Range.EntireRow podem devolver resultados incorrectos

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sintomas

Nas versões do Microsoft Excel listados no início deste artigo, o método Range.EntireRow poderá devolver um resultado incorrecto se o intervalo é uma selecção não adjacente. Por exemplo, se o intervalo actual for a selecção não adjacente $ A $ 1: $ A $ 3, $ C $ 11: $ C $ 13, o método Range.EntireRow devolverá $ 1: $ 13, não a $ 1: $ 3, $ 11: $ 13 como deve ser esperado. Isto também ocorre quando utiliza o método Range.EntireColumn para devolver colunas inteiras quando o intervalo é não adjacente.

Como contornar

Para voltar a correctas linhas ou colunas numa selecção quando a selecção não adjacente, tem de separar a selecção para áreas, de onde uma área está definida como um único elemento de uma selecção não adjacente. Este processo é ilustrado no exemplo de código do Visual Basic abaixo.

Exemplo de código do Visual Basic

A Microsoft fornece exemplos de programação apenas, para fins sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, as garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação apresentada e as ferramentas que são utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador. NOTA: Para converter este exemplo funcione com colunas, utilize "Colunas" em vez de "Linha".

Para utilizar o procedimento SelectRows Sub, seleccione qualquer combinação de células na Folha1. (Este exemplo assume a selecção actual se $ A $ 1: $ A $ 3, $ C $ 11: $ C $ 13 na Folha1.) Em seguida, clique em ' Macro ' no menu Ferramentas, seleccione o nome SelectRows da lista de nomes de macro e clique em executar.
     Option Explicit

   Sub SelectRows()

      ' Dimension some variables.
      Dim Counter As Integer, X As Variant, Y As Variant

      Sheets("Sheet1").Activate          ' Ensure the worksheet is active.

      ' Sets range X equal to the current selection.
      Set X = Selection
      ' Initializes range Y equal to the first Area in X.
      Set Y = X.Areas(1)

      ' Iterate through the loop once for each Area (nonadjacent piece)
      ' of the range X.
      For Counter = 1 To X.Areas.Count
         ' Set Y equal to the union of its previous range and the range of
         ' the rows which encompass the current Area.
         Set Y = Application.Union(Y, X.Areas(Counter).EntireRow)
      Next                                ' Loop until done.

      Y.Select                            ' Select the range Y.

   End Sub
				
por exemplo, se seleccionar o intervalo $ A $ 1: $ A $ 3, $ C $ 11: $ C $ 13 na folha de cálculo Folha1 e, em seguida, executar o procedimento SelectRows Sub, o procedimento determina quantos áreas existem na selecção (existem dois: $ A $ 1: $ A $ 3 e $ C $ 11: $ C $ 13), determina a combinação de linhas abrange cada área ($ 1: 3 ?, $ 11: $ 13) e selecciona o intervalo de $ 1: 3 ?, $ 11: $ 13.

Ponto Da Situação

Microsoft confirmou que este é um problema nas versões do Microsoft Excel listados no início deste artigo. Este problema foi corrigido no Microsoft Excel 97 para Windows e no Microsoft Excel 98 Macintosh Edition.

Mais Informação

Pode criar uma selecção não adjacente, seleccionando um intervalo e, em seguida, seleccionando outro intervalo mantendo premida a tecla CTRL do teclado ou utilizando os comandos do Microsoft Excel versão 4.0 ou do Visual Basic que seleccionar dois ou mais intervalos ao mesmo tempo.

A informação contida neste artigo aplica-se a:
  • Microsoft Excel 95a
  • Microsoft Excel 5.0c
  • Microsoft Excel 5.0 Standard Edition
  • Microsoft Excel 5.0a para Macintosh
Palavras-chave: 
kbmt kbbug kbprogramming KB108518 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 108518  (http://support.microsoft.com/kb/108518/en-us/ )
Retired KB ArticleExclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.