Página 1 de 1

Armazenar Valor de Combobox em célula

Enviado: 17 Abr 2018 às 22:31
por Lipe
Boa noite.

Estou com um projeto de um pequeno sistema de registro de recados para o escritorio onde trabalho.
Já defini a maior parte do sistema e ele está funcionando corretamente. Cada recado adicionado ao sistema é direcionado à caixa de email do setor correspondente juntamente com o relato do cliente que ligou para nós.

Mas eu decidi incluir também a opção de registrar recados pessoais dos empregados. Para isso eu criei um subsistema que recolhe dados (nome, matrícula setor etc), os coloca em ordem alfabetica e dispus esses dados no formulário de registro dos recados. A telefonista apenas precisa selecionar a categoria "Ligação Pessoal" e o Combobox com a lista dos empregados é exibida. Até aí tudo normal.

Os dados dos empregados estão numa planilha chamada "Funcionarios". A coluna tem nome, a B a matricula, e a C o Setor. Muito embora eu tenha feito a exibição do combobox em 2 colunas (Código 01), eu não consigo fazer com que a matrícula do funcionário (coluna B), seja gravado na célula onde preciso, que está na planilha "Criterio", range B7, onde é gerada a mensagem de email personalizadas com os dados. (Código 02)

Estudei as opções .Find e .Offset. mas não tenho conhecimento suficiente para sair desse enrosco. O máximo que consegui foi selecionar o próprio nome do empregado (me.list_emp.value). Outra opção tentada foi me.listIndex(list_emp.list(0,1).value que, teoricamente, deveria me localizar na segunda coluna do meu combobox, justamente onde está a matrícula do funcionário. Mas o máximo que consegui foram erros de depuração e arrancar alguns fios de cabelo da minha cabeça.

Imagem

Codigo 01:
Código: Selecionar todos
Private Sub UserForm_Initialize()
Me.txt_id = ThisWorkbook.Sheets("Recados").Range("BC1").Value
       
    Lin = 1
    Do Until ThisWorkbook.Sheets("Criterio").Cells(Lin, 3) = ""
    comb_cat.AddItem ThisWorkbook.Sheets("Criterio").Cells(Lin, 3)
    Lin = Lin + 1
    Loop

Me.comb_cat.ListIndex = 0
With ThisWorkbook.Sheets("Funcionarios").Range("A:A").CurrentRegion
    list_emp.List = .Offset(1).Resize(.Rows.Count - 1).Value
    list_emp.ColumnCount = 2
End With
End Sub
Código 02:
Código: Selecionar todos
Private Sub list_emp_Change()

ThisWorkbook.Sheets("Criterio").Range("B7").Value = Me.list_emp.Value

End Sub

Re: Armazenar Valor de Combobox em célula

Enviado: 17 Abr 2018 às 22:59
por babdallas
Não seri algo assim:
Código: Selecionar todos
Private Sub list_emp_Change()

ThisWorkbook.Sheets("Criterio").Range("B7").Value = Me.list_emp.List(Me.list_emp.ListIndex,0)

End Sub

Re: Armazenar Valor de Combobox em célula

Enviado: 18 Abr 2018 às 01:33
por Lipe
babdallas escreveu:Não seri algo assim:
Código: Selecionar todos
Private Sub list_emp_Change()

ThisWorkbook.Sheets("Criterio").Range("B7").Value = Me.list_emp.List(Me.list_emp.ListIndex,0)

End Sub
Não funciona. Fica similar com outros comandos que eu já tentei. Na sua resposta, o valor retornado é a coluna 0 (ou coluna A) da minha planilha de funcionários. Se eu mudo para .ListIndex, 1, ele me exibe dados da coluna de matrícula, mas sem critério de mostrar o dado ativo da combobox. Ele me retorna como valor a célula B1.

O que eu preciso é descobrir como interpretar essa busca para o Excel localizar corretamente a linha do funcionário selecionado no combobox.

Re: Armazenar Valor de Combobox em célula

Enviado: 18 Abr 2018 às 06:39
por babdallas
Fiz um teste e funcionou perfeitamente com a coluna 0, 1 ou seja lá qual for. O listindex vai trazer alinha selecionada do combobox.
Qualquer coisa anexe o arquivo que mostro para você.