Em algumas situações, é necessário repetir diversas condições para se criar a instrução If com ElseIf.
Sub Nota()
Dim Pontos As Integer
Dim Nota As String
Pontos = Inputbox("Quantos pontos obteve na prova?")
If Pontos < 2 Then
Nota = "E"
ElseIf Pontos < 4 Then
Nota = "D"
ElseIf Pontos < 6 Then
Nota = "C"
ElseIf Pontos < 8 Then
Nota = "B"
ElseIf Pontos <= 10 Then
Nota = "A"
Else
Msgbox "Inserir um valor entre 0 e 10"
End if
Msgbox "Sua nota foi " & Nota & "."
End Sub
Repetiu-se diversas vezes no código a variável Pontos, para criar as condições. Uma maneira de simplificar as repetições é utilizando Select Case (perceba que a variável que se deseja comparar será omitida e implicitamente replicada para todas as instruções).
Sub NotaSCase()
Dim Pontos As Integer
Dim Nota As String
Pontos = Inputbox("Quantos pontos obteve na prova?")
Select Case Pontos
Case Is < 2: Nota = "E" 'Equivalente a ElseIf Pontos < 2 Then: Nota = "E"
Case Is < 4: Nota = "D"
Case Is < 6: Nota = "C"
Case Is < 8: Nota = "B"
Case Is <= 10: Nota = "A"
Case Else
Msgbox "Inserir um valor entre 0 e 10"
End Select
Msgbox "Sua nota foi " & Nota & "."
End Sub
Note que é possível que múltiplas condições do Case resultem em True (E.g. no caso do exemplo acima, se Pontos for igual a 7, resultará True em <8 e <=10). Neste caso o comportamento de Case será o mesmo que em múltiplos True em ElseIf.
A instrução Case Else somente será executada caso não haja valor True.
É possível especificar múltiplos casos para o mesmo Case separando-os por vírgula ou utilizando o código To para criar um intervalo.
Sub Tempo_Fila_Banco()
Dim NFila As Integer
NFila = Inputbox("Número de pessoas na sua frente na fila(1 a 10)")
Select Case NFila
Case 1 'Equivalente a ElseIf NFila = 1 Then
MsgBox "Você é o proximo!"
Case 2 To 5 'Equivalente a ElseIf NFila >= 2 And ElseIf NFila <= 5 Then
MsgBox "Será atendido em breve"
Case 6, 7, 8 'Equivalente a ElseIf NFila = 6 Or NFila = 7 Or NFila = 8 Then
MsgBox "Tempo de espera moderado"
Case Else
MsgBox "Não receberá atendimento hoje"
End Select
End Sub
Perceba que quando Case é utilizado, faz-se necessário a utilização de um operador de comparação. Caso o operador seja omitido Case (sozinho), o Excel assumirá uma comparação de igualdade.
SuperExcelVBA.com é um site voltado ao aprendizado de VBA. Exemplos e explicações podem ter sido simplificados para maior e mais veloz compreensão. Estamos constantemente nos atualizando e corrigindo erros, porém não existe garantia sobre o conteúdo disponível no site. Todos os direitos reservados.
Excel ® é uma marca registrada da Microsoft Corporation.
© 2024 SuperExcelVBA | SOBRE