Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
#29905
Pessoal, boa noite

Estou desenvolvendo um projeto para um amigo e me deparei na seguinte dúvida:

Como fazer um "simples" grupo de 3 combobox em cascata? Já tentei diversas formas, mas nunca cheguei no objetivo. Nessa última tentativa, até consegui, mas ficou com os dados repetidos. Alguem pode me ajudar? Muito obrigado!!



Imagem
Você não está autorizado a ver ou baixar esse anexo.
#29941
Basole escreveu:Eu só fiz para o combobox natureza.
Veja se é isso.
Basole, boa noite

Exatamente isso, muito obrigado. Porém, tentei implementar utilizando o mesmo código para a terceira combobox e não deu certo. Apenas mudei o nome das variáveis e a célula que se referenciam. Pode me ajudar? Onde errei?
Código: Selecionar todos
Private Sub cbo_natureza_Change()

    Dim linnat As Integer
    Dim Dic2 As Object
    
    Set Dic2 = CreateObject("Scripting.Dictionary")
    
    linnat = 2
    
    cbo_desc.Clear
    
    With Sheets("Atividade")
        
        Do Until Sheets("Atividade").Range("B" & linnat).Value = ""
            
            If .Range("B" & linnat).Value = cbo_natureza.Text Then
                
                If Not Dic2.Exists(LCase(.Range("C" & linnat).Value)) Then
                    Dic2.Add LCase(.Range("C" & linnat).Value), Nothing
                End If
                
            End If
            
            linnat = linnat + 1
            
        Loop
        
        For Each Key In Dic2
            Me.cbo_desc.AddItem Key
        Next
    End With
    

End Sub
Você não está autorizado a ver ou baixar esse anexo.
#29942
O problema é que os dados do combobox natureza estão com letras minusculas.
Acrescente o 'Lcase' na linha de comparação com os dados da planilha, que estão com a 1ª letra maiuscula.
Código: Selecionar todos
If LCase(.Range("B" & linnat).Value) = LCase(cbo_natureza.Text) Then
#29943
Basole escreveu:O problema é que os dados do combobox natureza estão com letras minusculas.
Acrescente o 'Lcase' na linha de comparação com os dados da planilha, que estão com a 1ª letra maiuscula.
Código: Selecionar todos
If LCase(.Range("B" & linnat).Value) = LCase(cbo_natureza.Text) Then
Amigo, funcionou perfeitamente, muito obrigado.

Teria alguma forma para os dados do combobox não serem carregados em LCase e sim igual à tabela?
#29952
Sim meu amigo, elimine o Lcase.

Veja este exemplo que incluir o "*" (asterisco), caso o usuário queira recarregar os dados s/ os filtros e também a classificação dos dados em ordem alfabética, dentro da combobox:
Código: Selecionar todos
Dim linnat  As Integer
Dim Dic2 As Object
Dim a As Long
Dim b As Long
Dim c As Variant
    
    Set Dic2 = CreateObject("Scripting.Dictionary")
    
    Dic2.Add "*", Nothing
    
    linnat = 2
    
    cbo_desc.Clear
    
    With Sheets("Atividade")
        
        Do Until Sheets("Atividade").Range("B" & linnat).Value = ""
            
            If (.Range("B" & linnat).Value) = (cbo_natureza.Text) Then
                
                If Not Dic2.Exists(.Range("C" & linnat).Value) Then
                    Dic2.Add .Range("C" & linnat).Value, Nothing
                End If
                
            End If
            
            linnat = linnat + 1
            
        Loop
    End With
    
    With Me.cbo_desc
        
        .List = Dic2.keys
        
' *** Classif. Ordem Alfabética ***
        
        For a = 0 To .ListCount - 1
            For b = a To .ListCount - 1
                If .List(b) < .List(a) Then
                    c = .List(a)
                    .List(a) = .List(b)
                    .List(b) = c
                End If
            Next
        Next
        
        Set Dic2 = Nothing
        
    End With
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord