Como usar if-then no excel 2016 vba

If-Then é a estrutura de controle mais importante do VBA. Você provavelmente vai usar este comando em uma base diária. Use o If-Then estrutura quando você quer executar uma ou mais declarações condicionalmente. A cláusula else opcional, se incluído, permite-lhe executar uma ou mais declarações se a condição que você está testando é não

verdade. Aqui está um procedimento CheckUser simples, recodificados de usar a estrutura If-Then-Else:

CheckUser2 () UserName Sub = InputBox ( “Enter Your Name:“) Se UserName = ‘Satya Nadella’ ThenMsgBox ( ‘Bem-vindo Satya ...’) ‘... [Mais código aqui] ... ElseMsgBox“Desculpe. Apenas Satya Nadella pode executar este.”End Sub IfEnd

If-Then exemplos

A rotina a seguir demonstra a estrutura If-Then sem a cláusula Else opcional:

Sub GreetMe () Se Tempo lt; 0,5 Then MsgBox “Good Morning” End Sub

O procedimento GreetMe usa a função Tempo de VBA para obter a hora do sistema. Se o tempo atual é inferior a 0,5, os ecrãs de rotina uma saudação amigável. Se o tempo for maior ou igual a 0,5, as extremidades de rotina, e nada acontece.

Para exibir uma saudação diferente se o tempo for maior ou igual a 0,5, você pode adicionar outra instrução if-then após a primeira:

Sub GreetMe2 () Se Tempo lt; 0,5 Then MsgBox “Good Morning” Se Tempo gt; = 0,5 Então MsgBox “Boa tarde” End Sub

Notar que gt; = (maior do que ou igual a) é utilizado para a segunda instrução If-Then. Isto garante que todo o dia é coberta. Teve gt; (Maior que) foi usado, nenhuma mensagem apareceria se esse procedimento foram executados precisamente 12:00 horas. Isso é muito improvável, mas com um programa importante como este, você não quer correr nenhum risco.

Um exemplo If-Then-Else

Outra abordagem para o problema anterior usa a cláusula Else. Aqui é a mesma rotina recodificados de usar a estrutura If-Then-Else:

Sub GreetMe3 () Se Tempo lt; 0,5 Then MsgBox “Good Morning” Else _MsgBox “Boa Tarde” End Sub

Note-se que o carácter de continuação de linha (sublinhado) é usado no exemplo anterior. A declaração If-Then-Else é na verdade uma única instrução. VBA fornece uma maneira ligeiramente diferente de codificação se-Then-Else construções que usam uma declaração End If. Portanto, o procedimento GreetMe pode ser reescrita como

Sub GreetMe4 () Se Tempo lt; 0,5 ThenMsgBox “Good Morning” ElseMsgBox “Boa Tarde” End Sub IfEnd

Na verdade, você pode inserir qualquer número de declarações sob a parte Se e qualquer número de declarações sob a parte Else. Esta sintaxe é mais fácil de ler e tornar as demonstrações mais curto.

E se você precisa para expandir a rotina GreetMe para lidar com três condições: manhã, tarde e noite? Você tem duas opções: usar três If-Then declarações ou usar um aninhados If-Then-Else estrutura. nidificação significa colocar uma estrutura If-Then-Else dentro de outra estrutura de If-Then-Else. A primeira abordagem, usando três afirmações se-então, é mais simples:



Sub GreetMe5 () Dim Msg Como StringIf Tempo lt; 0,5 Então Msg = “Morning” Se Tempo gt; = 0,5 E Tempo lt; 0,75 Então Msg = “Afternoon” Se Tempo gt; = 0,75 Então Msg = “Evening” MsgBox “Good“ & MsgEnd Sub

Uma nova torção foi adicionada com a utilização de uma variável. A variável Msg obtém um valor de texto diferente, dependendo da hora do dia. A declaração MsgBox exibe a saudação: Bom dia, boa tarde ou boa noite.

A seguinte rotina executa a mesma acção, mas utiliza um If-Then-End If estrutura:

Sub GreetMe6 () Dim Msg Como StringIf Tempo lt; 0,5 ThenMsg = “Morning” End IFIF Tempo gt; = 0,5 E Tempo lt; 0,75 ThenMsg = “Afternoon” End IFIF Tempo gt; = 0,75 ThenMsg = “Noite” End IfMsgBox “Bom“ & MsgEnd Sub

usando ElseIf

Nos exemplos anteriores, cada declaração na rotina é executado. A estrutura ligeiramente mais eficiente seria sair da rotina assim que uma condição é encontrada para ser verdade. Na parte da manhã, por exemplo, o procedimento deve exibir a mensagem boa manhã e depois sair - sem avaliar as outras condições supérfluas.

Com uma rotina pequena como esta, você não precisa se preocupar com a velocidade de execução. Mas para aplicações maiores, em que a velocidade é fundamental, você deve saber sobre uma outra sintaxe para a estrutura If-Then.

Veja como você pode reescrever a rotina GreetMe usando a seguinte sintaxe:

Sub GreetMe7 () Dim Msg Como StringIf Tempo lt; 0,5 ThenMsg = “Morning” ElseIf Tempo gt; = 0,5 E Tempo lt; 0,75 ThenMsg = “Afternoon” ElseMsg = “Evening” End IfMsgBox “Good“ & MsgEnd Sub

Quando uma condição é verdadeira, VBA executa as instruções condicionais, ea estrutura Se termina. Em outras palavras, este procedimento é um pouco mais eficiente do que os exemplos anteriores. O trade-off é que o código é mais difícil de entender.

Outro exemplo If-Then

Aqui está outro exemplo que usa a forma simples da estrutura If-Then. Este procedimento solicita ao usuário uma quantidade e, em seguida, exibe o desconto apropriado, com base na quantidade que o usuário digita:

Sub ShowDiscount () Quantidade Dim Como LongDim desconto como DoubleQuantity = InputBox ( “Digite a quantidade:”) Se Quantidade gt; 0 Then desconto = 0.1If Quantidade gt; = 25 = Depois de desconto 0.15If Quantidade gt; = 50 = Depois de desconto 0.2If Quantidade gt; = 75 Em seguida, “desconto:“desconto = 0.25MsgBox & DiscountEnd Sub

Note que cada declaração If-Then nessa rotina é executada, eo valor para o desconto pode mudar à medida que as instruções são executadas. No entanto, a rotina em última análise, exibe o valor correto para desconto porque as instruções if-then estão em ordem crescente valores de desconto.

O procedimento seguinte realiza as mesmas tarefas usando a sintaxe alternativa ElseIf. Neste caso, a rotina termina imediatamente depois de executar as declarações para uma condição verdadeira:

Sub ShowDiscount2 () Quantidade Dim Como LongDim desconto como DoubleQuantity = InputBox ( “Digite a quantidade:“) Se Quantidade >- 0 e quantidade <- 25 ThenDiscount = 0.1ElseIf Quantidade >- = 25 Quantidade <- 50 ThenDiscount = 0.15ElseIf Quantidade >- = 50 E Quantidade <- 75 ThenDiscount = 0.2ElseIf Quantidade >- = 75 ThenDiscount = 0.25End IfMsgBox “Discount“ & DiscountEnd Sub

Estas múltiplas estruturas if-then são bastante complicado. Você pode querer usar a estrutura If-Then apenas para decisões binárias simples.


Publicações relacionadas