Ir para conteúdo
Fórum Script Brasil
  • 0

Função IF ou Select Case múltiplas condições


EAM2021

Pergunta

Boa noite,

Sou iniciante em VBA, e estou com dificuldades em criar uma estrutura que aceite várias condições (Option Button), para um filtro, como segue abaixo:

Sub ConsultaDados(ByVal formulario As UserForm)
    
    'declaração do objeto ws para a aba Dados
    Dim ws                      As Worksheet: Set ws = Planilha24
    
    'identificação da posição da coluna que deseja filtrar
    Dim colunaFiltro As Byte: colunaFiltro = Application.WorksheetFunction.Match(formulario.ComboBoxCampos.Text, ws.Range("A3:D3"), 0)
    
    'variável de controle para o for
    Dim i                       As Integer
    
    'definição do valor a ser filtrado
    Dim valorFiltro             As String: valorFiltro = UCase(formulario.TextBoxFiltro.Text)
    


'definição da seção selecionada

'............... AQUI QUE NÃO ESTOU CONSEGUINDO AJUSTAR PARA ACEITAR MAIS OPTION BUTTON/CONDIÇÕES ................

Dim secao    As String: secao = IIf(formulario.OptionButton1.Value = -1, formulario.OptionButton1.Caption, _
    formulario.OptionButton2.Caption)


 '............................... FIM DO PROCEDIMENTO ......................................
    
 'AQUI COMEÇA O PROCEDIMENTO PARA FILTRAR OS DADOS DA LISTBOX VIA TEXTBOX DE ACORDO COM O OPTION BUTTON SELECIONADO...
 
    'limpeza da listagem
    formulario.ListBoxLista.Clear
    
    'estrutura de repetição que irá varrer toda a tabela em busca dos valores
    For i = 4 To ws.Range("A1048576").End(xlUp).Row
    
        'se a célula da coluna pesquisada tiver alguma coisa relacionada com o campo de pesquisa e for igual a seção escolhida, então, preencher com o conteúdo informado.
        If ws.Cells(i, colunaFiltro) Like "*" & valorFiltro & "*" And ws.Cells(i, 4) = secao Then
            With formulario.ListBoxLista
                .AddItem
                .List(.ListCount - 1, 0) = ws.Cells(i, 1)
                .List(.ListCount - 1, 1) = ws.Cells(i, 2)
                .List(.ListCount - 1, 2) = ws.Cells(i, 3)
                .List(.ListCount - 1, 3) = ws.Cells(i, 4)
            End With
        End If
    Next i

End Sub

Tentei pelo If then Else e Select Case, mas sempre acusam erros que não consigo solucionar.

Já existe um código que consolida os botões com a ListBox... A minha dificuldade está em ajustar o código do filtro, para aceitar varias condições/botões de opção. Já que estão apenas as opções 1 e 2.

Não sei se deu para entender... 

Cordialmente,

Elane

4.png

Editado por EAM2021
Ortografia
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Bom dia.

Eu conseguir fazer um teste com o seguinte código:

Dim secao As String
  
If formulario.OptionButton1.Value Then
    secao = formulario.OptionButton1.Caption
ElseIf formulario.OptionButton2.Value Then
    secao = formulario.OptionButton2.Caption
ElseIf formulario.OptionButton3.Value Then
    secao = formulario.OptionButton3.Caption
ElseIf formulario.OptionButton4.Value Then
    secao = formulario.OptionButton4.Caption
ElseIf formulario.OptionButton5.Value Then
    secao = "*"
Else
    secao = "*"           'Já tentei incluir mais condições, porém o filtro sempre busca os dados da seção I ou II
    
End If
    

image.thumb.png.fe210a87d3c9b881444ba0c24cf73fc4.png

 

E fiz um grupo nos botões:

image.png.d8d1dd357e5135af0592bd1428e4edd3.png

 

Estou subindo o arquivo e já disponibilizo no email

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...