A função `Switch` no VBA (Visual Basic for Applications) é usada para avaliar uma lista de expressões e retornar o valor correspondente à primeira expressão que for avaliada como verdadeira. É uma alternativa ao uso de múltiplas instruções `If…Then…Else` quando você tem várias condições a serem verificadas.
Aqui está a sintaxe básica da função `Switch`:
Switch(expr1, value1, expr2, value2, ..., exprN, valueN)
- `expr1, expr2, …, exprN`: São as expressões a serem avaliadas.
- `value1, value2, …, valueN`: São os valores retornados se a expressão correspondente for avaliada como verdadeira.
A função verifica cada expressão na ordem em que são especificadas e retorna o valor correspondente à primeira expressão verdadeira. Se nenhuma expressão for verdadeira, a função retorna `Null`.
Exemplo de uso:
Vamos supor que você deseja usar a função `Switch` para determinar uma faixa de notas:
Function DeterminarFaixaDeNota(nota As Integer) As String
DeterminarFaixaDeNota = Switch( _
nota >= 90, "A", _
nota >= 80, "B", _
nota >= 70, "C", _
nota >= 60, "D", _
nota < 60, "F" _
)
End Function
Contexto de uso:
Você chamaria esta função em algum lugar do seu código para determinar a faixa da nota de um aluno, por exemplo:
Sub TestarDeterminarFaixaDeNota()
Dim nota As Integer
Dim faixa As String
nota = 85
faixa = DeterminarFaixaDeNota(nota)
MsgBox "A faixa da nota " & nota & " é: " & faixa
End Sub
Neste exemplo, se você passar a nota 85 para a função `DeterminarFaixaDeNota`, a função retornará “B”, pois 85 é maior ou igual a 80, mas menor que 90.
Notas importantes:
- Tenha cuidado para garantir que todas as expressões sejam avaliadas independentemente, pois a função vai retornar com base na primeira condição verdadeira encontrada.
- Se todas as condições forem falsas, a função `Switch` retornará `Null`, por isso é importante garantir que haja uma condição de captura (catch-all) no final, se necessário.
- Não é recomendado quando as condições são demasiadamente complexas ou interdependentes, pois isso pode tornar o código difícil de ler e manter. Nesse caso, considere usar `Select Case` ou `If…Then…Else`.