Notifications
Clear all

Filtrando combobox

7 Posts
3 Usuários
0 Reactions
1,605 Visualizações
(@click)
Posts: 0
New Member
Topic starter
 

Olá galera,

Tenho duas abas na minha planilha, a primeira Aba (Disciplinas) é referente tem uma tabela com matérias e sua respectiva sigla:

Matéria________Sigla
Matemática_____MAT
Portugues_______POR
História________HIS

a segunda aba (Assuntos) tem os assuntos de cada matéria

Matéria_________Assunto
Matemática_____Equações
Matemática_____Inequações
Português_______Uso da vírgula
Português acentos.

Com isso criei um formulário, quando eu seleciono uma mátéria na aba Disciplinas ela filtra de acordo com a tabela Assuntos!

Como eu faço para preencher uma textbox com a sigla da matéria?

Código usado

Private Sub CarregaCategorias()
    Dim linha As Integer, coluna As Integer, coluna2 As Integer
    linha = 5
    coluna = 2
    coluna2 = 3
    Me.TXTMateria.Clear
    With Sheets("Edital") '.Range("B5:C29")
        Do While Not IsEmpty(.Cells(linha, coluna))
            Me.TXTMateria.AddItem .Cells(linha, coluna).Value
            'Me.TXTSiglas.Value = .Cells(linha, coluna2).Value
            linha = linha + 1
        Loop
    End With
End Sub

'#######################################################################

 Private Sub CarregaProdutos(ByVal Categoria As String)
    Dim linha As Integer, colunaProduto As Integer, colunaCategoria As Integer
    linha = 5
    colunaProduto = 4
    colunaCategoria = 3
    Me.TXTAssunto.Clear
    With Sheets("Assuntos")
        Do While Not IsEmpty(.Cells(linha, colunaProduto))
            If .Cells(linha, colunaCategoria).Value = Categoria Then
                Me.TXTAssunto.AddItem .Cells(linha, colunaProduto).Value
            End If
            linha = linha + 1
        Loop
    End With
End Sub

'#######################################################################

Private Sub TXTMateria_Change()
Me.TXTSiglas.Value = ""
Call CarregaProdutos(Me.TXTMateria.List(Me.TXTMateria.ListIndex))
End Sub

'#######################################################################

Private Sub UserForm_Initialize()
Me.TXTMateria.SetFocus
Me.TXTData = Date
Call CarregaCategorias
End Sub
 
Postado : 16/10/2016 3:10 pm
(@mprudencio)
Posts: 0
New Member
 

Disponibilize o arquivo se nao conseguir mas é algo mais ou menos assim

textbox1.value = combobox1.value

 
Postado : 16/10/2016 4:06 pm
(@click)
Posts: 0
New Member
Topic starter
 

Isso eu sei, quero saber como pegar a sigla quando eu selecionar a matéria!

 
Postado : 16/10/2016 4:41 pm
(@mprudencio)
Posts: 0
New Member
 

Pesquise sobre vlookup no vba

 
Postado : 16/10/2016 4:57 pm
(@click)
Posts: 0
New Member
Topic starter
 

O problema é que são muitos registros, se eu colocar em cada registro um código vai ficar muito pesado, preciso de uma solução em vba!

 
Postado : 16/10/2016 5:13 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Conforme o Marcelo citou o ideal é disponibilizar seu modelo, então vamos ficar só em suposições por não conhecer a estrutura do modelo, só pela rotina que postou temos de adivinhar se quando cita :
TXTMateria
TXTSiglas
TXTAssunto
TXTData

São controles TextBox ou CombBox.

Como diz que já tem as instruções que localiza Disciplina, é só utilizar a propriedade OffSet junto com a instrução "Cells(linha, coluna)"

Propriedade Range.Offset (Excel)

Retorna um objeto Range que representa um intervalo deslocado do intervalo especificado.
Sintaxe
expressão.Offset(RowOffset, ColumnOffset)
expressão Uma variável que representa um objeto Range.

[]s

 
Postado : 16/10/2016 5:25 pm
(@click)
Posts: 0
New Member
Topic starter
 

Obrigado pessoal, mas eu já consegui

Alterei o código que consultava as matérias, caso alguém queira, segue abaixo:

Dim Intervalo As Range
Dim ws As Worksheet
Set ws = Worksheets("Edital")

For Each Intervalo In ws.Range("B5:B29") ' Carrega códigos
With Me.TXTMateria
    .AddItem Intervalo.Value
    .List(.ListCount - 1, 1) = Intervalo.Offset(0, 1).Value
End With
Next Intervalo
 
Postado : 16/10/2016 7:47 pm