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
A variável é o valor que queremos comparar, pode ser um valor numérico ou texto.
Os conjuntos podem ser:
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.
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.
Private Sub CBCodigo_Change()
ResponderExcluirTextPeç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
Amigo uma maneira de vc reduzir tb é comparar cada item com o indice da combo:
ExcluirImage01.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)
Defina
ResponderExcluirImage01.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
Caramba!!! Essa dica foi chave de ouro!!! Me ajudou bastante em meu projeto! Valeu mesmo!
Excluir