Eliminar células usando um “For Each…Next” loop in Excel

  • 9/28/2020
  • 3 minutos para ler
    • s
    • C
    • A
  • Aplica: Microsoft Office Excel 2007, Microsoft Office Excel 2003, Microsoft Office Excel 2002, Excel 97

>Nota

Office 365 ProPlus está sendo renomeado para Microsoft 365 Apps para empresas. Para mais informações sobre esta alteração, leia este post de blog.

Resumo

Microsoft Excel 2002 e versões posteriores do Excel excluem células em um loop “For Each…Next” de uma forma diferente do que o Microsoft Excel 97 e versões anteriores do Excel fazem.

Este artigo descreve as diferenças, e fornece um exemplo de macro Visual Basic for Applications que ilustra como excluir células em um loop.

Mais informações

Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não está limitado às garantias implícitas de comerciabilidade ou adequação a um determinado propósito. Este artigo assume que você está familiarizado com a linguagem de programação que está sendo demonstrada e com as ferramentas que são usadas para criar e depurar procedimentos. Os engenheiros de suporte da Microsoft podem ajudar a explicar a funcionalidade de um procedimento em particular. No entanto, eles não modificarão estes exemplos para fornecer funcionalidade adicional ou construir procedimentos para atender aos seus requisitos específicos.

Dados de amostra

Para usar a macro neste artigo, digite os seguintes dados de amostra em uma planilha:

A1: a B1: 1A2: b B2: 2A3: x B3: 3A4: x B4: 4A5: c B5: 5A6: x B6: 6A7: d B7: 7A8: x B8: 8A9: x B9: 9A10: e B10: 10

Macro de amostra

Em um novo módulo de macro, digite a seguinte macro.

Comportamento da macro de amostra no Excel 2002 e em versões posteriores do Excel

Quando você executa a macro DeleteCells no Excel 2002 e em versões posteriores do Excel, apenas as linhas 3, 6 e 8 são excluídas. Embora as linhas 4 e 9 contenham um “x” na coluna A, a macro não exclui as linhas. Os resultados da macro são os seguintes:

A1: a B1: 1A2: b B2: 2A3: x B3: 4A4: c B4: 5A5: d B5: 7A6: x B6: 9A7: e B7: 10

Quando o Microsoft Excel exclui a linha 3, todas as células sobem uma linha. Por exemplo, a célula A3 assume o conteúdo da célula A4, a célula A4 assume o conteúdo da célula A5, e assim por diante. Após o Para Cada…Próximo loop avaliar uma célula, ele avalia a próxima célula; portanto, quando as células são deslocadas, elas podem ser puladas pelo loop.

Comportamento da macro de amostra no Microsoft Excel 5.0 e Microsoft Excel 7.0

Quando você executa a macro DeleteCells no Excel 5.0 e no Excel 7.0, a macro exclui todas as linhas que contêm um “x”. Os resultados da macro são os seguintes:

A1: a B1: 1A2: b B2: 2A3: c B3: 5A4: d B4: 7A5: e B5: 10

Quando a linha 3 é excluída, todas as células se movem para cima de uma linha. Então, a célula A3 assume o conteúdo da célula A4, a célula A4 assume o conteúdo da célula A5, e assim por diante.

No entanto, ao contrário do comportamento do loop no Excel 2002 e em versões posteriores do Excel, quando o loop “Para Cada…Próximo” avalia uma célula no Excel 5.0 e no Excel 7.0, o loop reavalia a célula se ela for excluída do loop. Portanto, as células não são puladas.

Método recomendado para usar um loop para excluir células

Utilizar a seguinte macro quando você quiser usar um loop para excluir células:

Os resultados desta macro em todas as versões do Excel são os seguintes:

A1: a B1: 1A2: b B2: 2A3: c B3: 5A4: d B4: 7A5: e B5: 10

Método adicional para usar um loop para excluir células

Este é um método alternativo ao método que é mostrado acima. Este método produz os mesmos resultados.

Deixe uma resposta

O seu endereço de email não será publicado.