OS MELHORES VÍDEOS

 

Pesquisar

segunda-feira, 13 de janeiro de 2014

Select Case

O que é?

No VBA, a estrutura Select Case busca uma variável definida dentro de uma lista de conjuntos possíveis. Se a variável pertencer aquele conjunto, o código imediatamente abaixo de Case é executado, então a instrução é fechada com End Select.



Select Case [variável]
 
 Case [conjunto 1]
    [código executado caso a variável pertença ao conjunto 1]
      .
      .
      .
 Case [conjunto N]
    [código executado caso a variável pertença ao conjunto N]
 Case Else
    [código executado caso a variável não pertença a nenhum conjunto]

End Select
variável é o valor que queremos comparar, pode ser um valor numérico ou texto.
Os conjuntos podem ser:
  • valores (Ex: Case 2000);
  • intervalos de valores usando a palavra chave To (Ex: Case 1000 To 1500);
  • comparação usando a palavra chave Is (Ex: Case Is > 1000).
Você pode usar múltiplos conjuntos dentro de uma única instrução Case, separando os por vírgula (Ex: Case 1, 2, 3, 5 to 10, Is > 16, Is < 20). Case Else é opcional e permite que um conjunto alternativo de instruções seja executado caso a variável não pertença a nenhum conjunto anterior. End Select encerra o bloco de código.
Note que se a variável pertencer a mais de um conjunto, somente os códigos do primeiro conjunto que coincida serão executados. Após encontrar uma coincidência, a instrução ignora todos os outros conjuntos, pulando direto para End Select.

Exemplo

Neste exemplo, faremos um cálculo fictício de imposto de renda. Suponha que a tabela de imposto de renda seja esta:
  • 0% para quem ganha até R$ 1.200,00
  • 2% para quem ganha até R$ 2.500,00
  • 4% para quem ganha até R$ 5.000,00
  • 6% para quem ganha acima de R$ 5.000,00
Nossa variável é o salário.
Cada faixa salarial é um conjunto.
Observe o código:
Select Case salario

  Case Is <= 1200
           taxa = 0
  Case 1201 To 2500
           taxa = 2
  Case 2501 To 5000
           taxa = 4
  Case Is > 5000
           taxa = 6
       
End Select
No código acima, o salário será comparado com cada faixa do Imposto de Renda, quando o salário estiver dentro de uma faixa, a taxa é definida e a instrução pula para End Select encerrando o procedimento.

3 comentários:

  1. Private Sub CBCodigo_Change()
    TextPeça.Text = CBCodigo.Column("1")
    TextLinha.Text = CBCodigo.Column("2")
    TextModelo.Text = CBCodigo.Column("3")
    Select Case CBCodigo.ListIndex
    Case Is = 0
    Image01.Visible = True
    Image02.Visible = False
    Image03.Visible = False
    Image04.Visible = False
    Image05.Visible = False
    Image06.Visible = False
    Image07.Visible = False
    Image08.Visible = False
    Image09.Visible = False
    Image10.Visible = False


    Case Is = 1
    Image01.Visible = False
    Image02.Visible = True
    Image03.Visible = False
    Image04.Visible = False
    Image05.Visible = False
    Image06.Visible = False
    Image07.Visible = False
    Image08.Visible = False
    Image09.Visible = False
    Image10.Visible = False


    Case Is = 2
    Image01.Visible = False
    Image02.Visible = False
    Image03.Visible = True
    Image04.Visible = False
    Image05.Visible = False
    Image06.Visible = False
    Image07.Visible = False
    Image08.Visible = False
    Image09.Visible = False
    Image10.Visible = False


    Case Is = 3
    Image01.Visible = False
    Image02.Visible = False
    Image03.Visible = False
    Image04.Visible = True
    Image05.Visible = False
    Image06.Visible = False
    Image07.Visible = False
    Image08.Visible = False
    Image09.Visible = False
    Image10.Visible = False


    Case Is = 4
    Image01.Visible = False
    Image02.Visible = False
    Image03.Visible = False
    Image04.Visible = False
    Image05.Visible = True
    Image06.Visible = False
    Image07.Visible = False
    Image08.Visible = False
    Image09.Visible = False
    Image10.Visible = False


    Case Is = 5
    Image01.Visible = False
    Image02.Visible = False
    Image03.Visible = False
    Image04.Visible = False
    Image05.Visible = False
    Image06.Visible = True
    Image07.Visible = False
    Image08.Visible = False
    Image09.Visible = False
    Image10.Visible = False


    Case Is = 6
    Image01.Visible = False
    Image02.Visible = False
    Image03.Visible = False
    Image04.Visible = False
    Image05.Visible = False
    Image06.Visible = False
    Image07.Visible = True
    Image08.Visible = False
    Image09.Visible = False
    Image10.Visible = False


    Case Is = 7
    Image01.Visible = False
    Image02.Visible = False
    Image03.Visible = False
    Image04.Visible = False
    Image05.Visible = False
    Image06.Visible = False
    Image07.Visible = False
    Image08.Visible = True
    Image09.Visible = False
    Image10.Visible = False


    Case Is = 8
    Image01.Visible = False
    Image02.Visible = False
    Image03.Visible = False
    Image04.Visible = False
    Image05.Visible = False
    Image06.Visible = False
    Image07.Visible = False
    Image08.Visible = False
    Image09.Visible = True
    Image10.Visible = False

    Como Reduzir estes código,ou excrever de outra forma que possa reduzir seu tamanho.

    Sem mas,
    Elso

    ResponderExcluir
    Respostas
    1. Amigo uma maneira de vc reduzir tb é comparar cada item com o indice da combo:

      Image01.Visible = (CBCodigo.ListIndex = 0)
      Image02.Visible = (CBCodigo.ListIndex = 1)
      Image03.Visible = (CBCodigo.ListIndex = 2)
      Image04.Visible = (CBCodigo.ListIndex = 3)
      Image05.Visible = (CBCodigo.ListIndex = 4)
      Image06.Visible = (CBCodigo.ListIndex = 5)
      Image07.Visible = (CBCodigo.ListIndex = 6)
      Image08.Visible = (CBCodigo.ListIndex = 7)
      Image09.Visible = (CBCodigo.ListIndex = 8)
      Image10.Visible = (CBCodigo.ListIndex = 9)

      Excluir
  2. Defina
    Image01.Visible = False
    Image02.Visible = False
    Image03.Visible = False
    Image04.Visible = False
    Image05.Visible = False
    Image06.Visible = False
    Image07.Visible = False
    Image08.Visible = False
    Image09.Visible = False
    Image10.Visible = False

    antes do Case.
    o Case mudará apenas o que será true.

    Case Is = 8
    Image09.Visible = True

    ResponderExcluir