Vba for loop (para o próximo, para cada)

Pontos chave

Para o próximo ciclo

VBA FOR NEXT é um loop fixo que usa um contador para executar iterações. Em termos simples, você precisa especificar o número de vezes que deseja executar o loop e, quando atingir esse número de loops, ele irá parar automaticamente. É por isso que é um loop fixo e mais popular entre os desenvolvedores VBA.

Sintaxe

Aqui está a sintaxe do loop VBA For Next:

 For counter = Start To End [Step stepsize] [statements] Next [counter]
a favor do início ao fim
  1. Contador : É uma variável que armazena o número de repetições e aumenta seu valor a cada repetição. Por exemplo, se o loop estiver na quinta iteração, o valor do contador será cinco e, quando o loop executar a instrução para a quinta iteração, o valor do contador mudará para seis.
  2. Start : É uma variável numérica que armazena o valor inicial do contador.
  3. End : É uma variável numérica que armazena o valor final do contador.
  4. Tamanho do passo : esta variável especifica um grande aumento ou diminuição no valor do contador. Por padrão, o tamanho do passo é um, mas você também pode usar qualquer valor positivo ou negativo.
  5. Instrução : Este é um conjunto de código que você deseja executar em cada iteração do loop For Next.
  6. Próximo : Esta é a instrução final para uma iteração do loop e usa o valor do contador para dizer ao VBA para repetir o loop e quando o contador atingir o valor final, ele encerra o loop.

Exemplo para entender para o próximo loop

Para entender como usá-lo no próximo loop, vamos escrever um código simples para adicionar números de série em uma coluna.

exemplo para entender o próximo loop

Para usar o For Next Loop, você pode seguir as seguintes etapas:

  1. Primeiro, você precisa declarar uma variável que possa usar para armazenar o valor do contador.
    declare-a-variable
  2. A seguir, precisamos atribuir o valor do contador à variável.
    assign-the-counter-value
  3. Agora é hora de escrever o código para o loop, então na primeira linha você precisa usar a variável contador e definir os valores inicial e final. Aqui neste código você tem a variável ‘i’ como valor final.
    write-code-for-loop
  4. A partir daí, você precisa escrever um código que possa adicionar os números de série à célula ativa e depois passar para a próxima célula. À medida que o valor do contador aumenta a cada iteração, você pode usá-lo para inserir o número de série na célula ativa e depois disso você pode usar o shift para mover a seleção para a próxima célula abaixo.
    code-that-can-add-serial-number
  5. No final, use a próxima palavra-chave e a variável contador para completar o código do loop.
 Sub AddSerialNumbers() Dim i As Integer i = 10 For i = 1 To i ActiveCell.Value = i ActiveCell.Offset(1, 0).Activate Next i End Sub

Você pode ver no instantâneo abaixo, quando executo este código, ele começa na célula selecionada inserindo um número de série e depois passa para a próxima célula em cada iteração.

vba-para-próximo-loop-exemplo-1

Como você sabe, For Next é um loop fixo e neste código, quando você atribui um valor numérico, ele diz ao VBA para executar o loop esse número de vezes.

E você pode ver o instantâneo abaixo que tirei na segunda iteração do loop onde o valor da variável do contador “i” é dois.

atribuir um valor numérico

O que estou tentando enfatizar é que a variável count altera seu valor a cada iteração e insere esse valor na célula ativa; em seguida, a mudança ativa a próxima célula abaixo, o que completa uma iteração.

No final, a palavra-chave “Next” é VBA para retornar à primeira linha do loop e repeti-lo. Como você viu na sintaxe For Next, você também pode usar um valor de etapa no loop para operar o contador com base nisso.

Portanto, se você usar dois como valor da etapa, o código será semelhante ao seguinte.

 Sub AddSerialNumbers() Dim i As Integer i = 10 For i = 1 To i Step 2 ActiveCell.Value = i ActiveCell.Offset(1, 0).Activate Next i End Sub

E quando você executar esse código, haverá na atividade algo como o snapshot abaixo.

quando você executa um instantâneo de código

Quando você usa um valor de etapa (como a etapa 2, usada no código acima), o VBA ignora cada segunda iteração no loop e, como você pode ver, você tem cinco números com a diferença de um em cada número.

Nota : No exemplo acima, você usou ‘i’ como variável de contador, mas também pode usar um nome diferente conforme sua conveniência.

Para cada loop subsequente

VBA FOR EACH NEXT é um loop fixo que pode percorrer todos os objetos em uma coleção. Em For Each Next, você não precisa especificar o número de iterações. Em vez disso, você pode especificar uma coleção de objetos e ela poderá iterar por todos esses objetos, um por um.

Sintaxe

Aqui está a sintaxe VBA para cada loop subsequente:

 For Each Object In Collection [statements] Next [object]
sintaxe para vba para cada próximo loop
  1. Objeto : representa o único objeto na coleção de objetos pelo qual você está fazendo um loop. A cada iteração, passa de um objeto para outro.
  2. Coleção : Esta é uma coleção de objetos pelos quais você deseja percorrer.
  3. Instrução : Linha(s) de código que você deseja executar em cada loop em todos os objetos da coleção.
  4. Próximo : Esta é a instrução final de uma iteração do loop e diz ao VBA para passar para o próximo objeto na coleção.

Exemplo para entender o loop For Each Next

Para entender o loop For Each Next, vamos escrever um código para ocultar todas as planilhas, exceto a planilha ativa. Este código irá verificar o nome de cada planilha e combiná-lo com o nome da planilha ativa e ocultá-lo se não corresponder.

Para usar o loop For Each Next, você pode seguir as seguintes etapas:

  1. Primeiro, você precisa declarar uma variável para usar como planilha.
    code-to-hide-the-all-sheets
  2. Depois disso, use a palavra-chave “For Each”, depois a variável “mySheet” para a planilha e use “ActiveWorkbook.Worksheets” para a coleção de planilhas da pasta de trabalho ativa.
    for-each-mysheet-active-workbook-worsheets
  3. Em seguida, você precisa usar a instrução VBA IF para testar se o nome da planilha que está atualmente nesta iteração do loop NÃO É IGUAL à planilha ativa e, se esta condição for verdadeira, ocultar a planilha que está agora no loop iteração.
    vba-if-statement-to-test
  4. No final, você tem a palavra-chave NEXT e “mySheet” a variável para completar o código do loop.
    next-keyword-and-mysheet

Código final:

 Sub Hide_Other_Sheets() Dim mySheet As Worksheet For Each mySheet In ActiveWorkbook.Worksheets If mySheet.Name <> ActiveSheet.Name Then mySheet.Visible = False End If Next mySheet End Sub

Desta forma, todas as planilhas ficarão ocultas.

Adicione um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *