Ir para conteúdo
Fórum Script Brasil

WAYNEWAVE

Membros
  • Total de itens

    7
  • Registro em

  • Última visita

Posts postados por WAYNEWAVE

  1. Boa tarde,

    Tenho um formulário encadeado que filtra em cinco níveis, com base em uma planilha de cadastros (Plan1).

    1º Categoria; 2º Produto; 3º Tipo; 4º Tamanho; 5º Cor;

    Segue o código:

    '------------------Primeiro Nível---------------------------------------
    Private Sub ComboBoxCategorias_Change()
        Call PreencheCombo2
    End Sub
    
    Sub PreencheCombo2()
    Dim OCOLLECTION As New Collection
    Dim VARVALUE As Variant
    Dim I As Long
    Dim L As Long
    L = 2
    ComboBoxProdutos.Clear
    
    On Error Resume Next
        For Each VARVALUE In Plan1.Range("B2:B" & Plan1.Range("A65536").End(xlUp).Row)
            If ComboBoxCategorias.Value = Plan1.Range("A" & L).Value Then
                OCOLLECTION.Add VARVALUE, VARVALUE
            End If
            
            L = L + 1
        Next
    
    For I = 1 To OCOLLECTION.Count
        ComboBoxProdutos.AddItem OCOLLECTION.Item(I)
    Next I
    
    End Sub
    '-------------Segundo Nível--------------------------------------------
    Private Sub ComboBoxProdutos_Change()
        Call PreencheCombo3
    End Sub
    
    Sub PreencheCombo3()
    Dim OCOLLECTION As New Collection
    Dim VARVALUE As Variant
    Dim I As Long
    Dim L As Long
    L = 2
    ComboBoxTipo.Clear
    
    On Error Resume Next
        For Each VARVALUE In Plan1.Range("C2:C" & Plan1.Range("A65536").End(xlUp).Row)
            If ComboBoxProdutos.Value = Plan1.Range("B" & L).Value Then
                OCOLLECTION.Add VARVALUE, VARVALUE
            End If
            
            L = L + 1
        Next
    
    For I = 1 To OCOLLECTION.Count
        ComboBoxTipo.AddItem OCOLLECTION.Item(I)
    Next I
    
    End Sub
    '--------------------Terceiro Nível-------------------------------------
    Private Sub ComboBoxTipo_Change()
        Call PreencheCombo4
    End Sub
    
    Sub PreencheCombo4()
    Dim OCOLLECTION As New Collection
    Dim VARVALUE As Variant
    Dim I As Long
    Dim L As Long
    L = 2
    ComboBoxTamanho.Clear
    
    On Error Resume Next
        For Each VARVALUE In Plan1.Range("D2:D" & Plan1.Range("A65536").End(xlUp).Row)
            If ComboBoxProduto.Value = Plan1.Range("B" & L).Value Then
            If ComboBoxTipo.Value = Plan1.Range("C" & L).Value Then
                OCOLLECTION.Add VARVALUE, VARVALUE
            End If
            End If
            
            L = L + 1
            
        Next
    
    For I = 1 To OCOLLECTION.Count
        ComboBoxTamanho.AddItem OCOLLECTION.Item(I)
    Next I
    
    End Sub
    '----------------------Quarto Nível-----------------------------------
    Sub PreencheCombo6()
    Dim OCOLLECTION As New Collection
    Dim VARVALUE As Variant
    Dim I As Long
    Dim L As Long
    L = 2
    ComboBoxCor.Clear
    
    On Error Resume Next
        For Each VARVALUE In Plan1.Range("E2:E" & Plan1.Range("A65536").End(xlUp).Row)
            If ComboBoxTamanho.Value = Plan1.Range("D" & L).Value Then
                OCOLLECTION.Add VARVALUE, VARVALUE
            End If
            
            L = L + 1
            
        Next
    
    For I = 1 To OCOLLECTION.Count
        ComboBox5.AddItem OCOLLECTION.Item(I)
    Next I
    
    End Sub
    
    
    '-------------------------Quinto Nível--------------------------------
    
    Private Sub UserForm_Initialize()
    Dim OCOLLECTION As New Collection
    Dim VARVALUE As Variant
    Dim I As Long
    On Error Resume Next
    For Each VARVALUE In Plan1.Range("A2:A" & Plan1.Range("A65536").End(xlUp).Row)
    
        OCOLLECTION.Add VARVALUE, VARVALUE
    Next
    For I = 1 To OCOLLECTION.Count
        ComboBoxCategorias.AddItem OCOLLECTION.Item(I)
    Next I
    
    End Sub

    Esse código apresenta dois problemas na sua execução:

    PRIMEIRO: Ele não está filtrando em cadeia, ou seja, ele filtra somente com base no último critério e não com base em todos os critérios, trazendo na Combox valores em excesso, por exemplo, eu escolho:
    Categoria: Recheios;
    Produto: Pillow Top;
    Tipo: Pluma de Ganso;
    Tamanho: SK, C, S, ou Q/K  ----- Isso é o que era pra ele trazer ----- 
    Mas ele traz:
    Categoria: Recheios;
    Produto: Pillow Top;
    Tipo: Pluma de Ganso;
    Tamanho: SK, C, S,Q/K, 40x90cm, 60x90cm, 30x70cm             ----- Isso é o que ele Traz ----

    Isso acontece por que o código filtra com base apenas no ultimo critério(Tipo:Pluma de Ganso) quando na verdade era pra filtrar com base em todos os critérios.

    SEGUNDO:
    Quando o critério anterior é vazio, ele não traz o posterior corretamente, por exemplo:
    Categoria: Recheios;
    Produto: Protetor de Colchão;
    Tipo: (vazio)
    Tamanho: SK, C, S OU Q/K  ----- Isso é o que era pra ele Trazer ----
    Mas ele traz:
    Categoria: Recheios;
    Produto: Protetor de Colchão;
    Tipo: (vazio)
    Tamanho: (vazio) ----- Isso é o que ele Traz ----

    Alguém pode me ajudar?

  2. Boa tarde,

    Conseguem me dar um exemplo de um código que deixe uma planilha invisível para apenas os usuários com uma senha cadastrada possam ver o conteúdo ?

    Por exemplo: 
    Pasta de Trabalho com Planilhas A, B e C. para a Planilha A somente o usuário X pode ter acesso, para planilha B somente o usurário Y e para a planilha C apenas o usuário K.
    Usuário Beta terá acesso a todas.

  3. Boa tarde, tenho um código que filtra uma tabela pela data. Porém, está dando erro, pois, o VBA não entende que o formato que está na CÉLULA é dd/mm/yyyy, ele entende mm/dd/yyyy.

    Alguém pode me ajudar ?

    Sub Filtro_Data()
    Application.Calculation = xlAutomatic
    
    Dim data_ini As Date
    Dim data_fin As Date
    
    
    data_ini = DateValue(Format(Range("F2"), "dd/mm/yyyy"))
    data_fin = DateValue(Format(Range("G2"), "dd/mm/yyyy"))
    Sheets("BACABA").Select
    Selection.AutoFilter
    ActiveSheet.Range("$c$5:d$50000").AutoFilter Field:=2, Criteria1:= _
    ">=" & data_ini, Operator:=xlAnd, Criteria2:="<=" & data_fin
    
    
    
    End Sub

     

  4. 2 horas atrás, WAYNEWAVE disse:

    Boa tarde!

    Galera preciso de um código que me retorne as informações de uma tabela com base um filtro de data(De[yy/xx/aa] Até[zz/xx/yy]) que está em uma célula do excel.

     

    Basicamente é um PROCV... A tabela contém 10 colunas e a data está na segunda.

    Eu queria que código traga as informações da Tabela Mãe para uma outra Tabela Filha, baseado nos criterios de data.

     

    Alguém pode me ajudar?

    A foto 1 é a base de dados e a foto 2 é onde eu gostaria que retornasse os valores de acordo com o filtro de data.

    1.png

    2.png

  5. Boa tarde!

    Galera preciso de um código que me retorne as informações de uma tabela com base um filtro de data(De[yy/xx/aa] Até[zz/xx/yy]) que está em uma célula do excel.

     

    Basicamente é um PROCV... A tabela contém 10 colunas e a data está na segunda.

    Eu queria que código traga as informações da Tabela Mãe para uma outra Tabela Filha, baseado nos criterios de data.

     

    Alguém pode me ajudar?

×
×
  • Criar Novo...