Testando múltiplas condições em código VBA (Select Case)

Muitas vezes temos que testar inúmeras possibilidades para uma variável durante a execução de um código em VBA.
Normalmente pensamos em construir uma estrutura do tipo If...Then...Else.
Se o conjunto de possibilidades for relativamente pequena, a abordagem acima é de fácil implantação e interpretação, mas à medida que aumentam os testes, a estrutura tende a ficar mais complexa.
Tomemos o seguinte exemplo: Construir uma função que estabeleça o status do fornecedor com base na nota obtida numa auditoria de qualidade, com base nos seguintes critérios:
- Se a nota for menor que 30, o fornecedor deve ser "desqualificado"
- Se a nota estiver entre 30 e 40, "situação crítica"
- Se a nota estiver entre 40 e 50, "estado de alerta"
- Se a nota estiver entre 50 e 60, "sob monitoramento"
- Se a nota estiver entre 60 e 70, "aceitável"
- Se a nota estiver entre 70 e 80, "bom"
- Se a nota estiver entre 80 e 90, "muito excelente"
- Se a for superior a 90, "excelente".

Vejamos como ficaria o código, utilizando a estrutura If Then ElseIf.


Function StatusNotaV1nota)
If nota < 30 Then
StatusNotaV1 = "desqualificado"
ElseIf nota >= 30 And nota < 40 Then
StatusNotaV1 = "situação crítica"
ElseIf nota >= 40 And nota < 50 Then
StatusNotaV1 = "estado de alerta"
ElseIf nota >= 50 And nota < 60 Then
StatusNotaV1 = "sob monitoramento"
ElseIf nota >= 60 And nota < 70 Then
StatusNotaV1 = "aceitável"
ElseIf nota >= 70 And nota < 80 Then
StatusNotaV1 = "bom"
ElseIf nota >= 80 And nota < 90 Then
StatusNotaV1 = "muito bom"
ElseIf nota >= 50 And nota < 60 Then
StatusNotaV1 = "excelente"
End If
End Function

O código acima é completamente funcional, mas acho-o meio poluído.

Vejamos como fica o mesmo código, utilizando o comando Select Case

Function StatusNotaV2(nota)
    Select Case nota
    Case Is < 30
    StatusNotaV2 = "desqualificado"
    Case 30 To 39
    StatusNotaV2 = "situação crítica"
    Case 40 To 50
    StatusNotaV2 = "estado de alerta"
    Case 50 To 60
    StatusNotaV2 = "sob monitoramento"
    Case 60 To 70
    StatusNotaV2 = "aceitável"
    Case 70 To 80
    StatusNotaV2 = "bom"
    Case 80 To 90
    StatusNotaV2 = "muito bom"
    Case Is > 90
    StatusNotaV2 = "excelente"
    End Select
End Function

O resultado é o mesmo, mas com uma estrutura mais clean.

[ ]s

0 comentários:

Pesquisar este blog

Carregando...

Arquivo do blog