VBA Multiple (Nested) If Statements

Este tutorial mostrará como usar instruções If aninhadas no VBA

Se as declarações permitem que você teste uma única condição no VBA para ver se a condição é verdadeira ou falsa e, dependendo da resposta, o código se moverá na direção da declaração verdadeira ou falsa.

Uma única declaração IF

1234567891011 Sub TestIfDim x como inteirox = 10Se x = 10 então'se x for 10, a condição é verdadeiraMsgBox x é 10 "Outro'se x não for 10, a condição é falsaMsgbox "x não é 10"Fim seEnd Sub

IFs aninhados explicados

Um If aninhado permite que você coloque várias condições DENTRO de cada uma das declarações True e / ou False do If original.

1234567891011121314151617181920212223242526 Sub TestNestedIf ()Dim x como inteiroDim y como inteiroDim z as Integerx = 10y = 9z = 8Se x = 10 então'se x for 10, a condição é verdadeira, então teste ySe y = 8 entãoMsgBox "y é 9"Outro'se y não for 10, a condição é falsaMsgbox "y não é 9"Fim seOutro'se x não for 10, então a condição é falsa, então vamos' testar zSe z = 8 entãoMsgBox "z is 8"Outro'se z não for 8, a condição é falsaMsgbox "z não é 10"Fim se'outra extremidade se é necessária para fechar o original seFim seEnd Sub

Recuar o código ao escrevê-lo é sempre uma boa prática, pois torna o código fácil de ler e seguir quando você precisa voltar a ele em algum estágio ou quando outro programador precisa lê-lo.

Também podemos criar uma função projetada pelo usuário (UDF) e chamar os valores de algumas células do Excel para a função usando parâmetros.

1234567891011121314151617181920 Função GetIf (x as Integer, y as Integer, z as Integer) as StringSe x = 10 então'se x for 10, a condição é verdadeira, então teste ySe y = 8 entãoGetIf = "y é 9"Outro'se y não for 10, a condição é falsaGetIf = "y não é 9"Fim seOutro'se x não for 10 então a condição é falsa, então vamos' testar zSe z = 8 entãoGetIf = "z é 8"Outro'se z não for 8, a condição é falsaGetIf = "z não é 10"Fim se'outra extremidade se é necessária para fechar o original seFim seFunção Final

Exemplo aninhado se prático

Considere a seguinte função:

12345678910111213141516171819202122 Função GetDiscount (dblPrice As Double) As DoubleSe dblPrice> = 1000 Then'se o preço for maior que 1000, atribua um descontoSe dblPrice> = 2000 Then'se for maior que 2000, dê 10% de descontoGetDiscount = dblPrice * 0.1Outro'caso contrário, dê 5% de descontoGetDiscount = dblPrice * 0,05Fim se'se o preço não for maior que 1000Outro'se for maior que 500, dê 2,5% de descontoSe dblPrice> = 500 ThenGetDiscount = dblPrice * 0,025Outro'caso contrário, sem descontoGetDiscount = 0Fim se'outra extremidade se é necessária para fechar o original seFim seFunção Final

Usando esta função em uma planilha Excel, podemos testar para ver o preço total de um pedido e aplicar descontos diferentes dependendo desse total.

Programação VBA | O Code Generator funciona para você!

Usando ElseIf

ElseIf nos permite simplificar seu código, já que ele apenas passou para a segunda instrução if se a primeira retornar um falso.

12345678910111213141516 Função GetDiscount (dblPrice As Double) As Double'use else if para reduzir a escrita de códigoSe dblPrice> = 2000 ThenGetDiscount = dblPrice * 0.1ElseIf dblPrice> = 1000 ThenGetDiscount = dblPrice * 0,075ElseIf dblPrice> = 500 EntãoGetDiscount = dblPrice * 0,05ElseIf dblPrice> = 200 EntãoGetDiscount = dblPrice * 0,025ElseIf dblPrice> = 100 EntãoGetDiscount = dblPrice * 0,01OutroGetDiscount = 0Fim seFunção Final

Usando uma Declaração de Caso

Também podemos usar uma Declaração de Caso para obter o mesmo efeito.

1234567891011121314151617 Função GetDiscount (dblPrice As Double) As DoubleSelecione Case dblPrice'esta declaração de caso tem 6 níveis de desconto diferentesCase Is> = 2.000GetDiscount = dblPrice * 0.1Caso É> = 1000GetDiscount = dblPrice * 0,075Caso É> = 500GetDiscount = dblPrice * 0,05Caso É> = 200GetDiscount = dblPrice * 0,025Caso É> = 100GetDiscount = dblPrice * 0,01Case ElseGetDiscount = 0End SelectFunção Final

wave wave wave wave wave