Página 1 de 1

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

Enviado: 04 Fev 2021 às 23:46
por EAM2021
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:
Código: Selecionar todos
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,