Bom dia galera, estou com uma dúvida e gostaria de saber se podem me ajudar.
É o seguinte, possuo uma ListBox com apenas 4 valores visíveis, quando dou duplo clique sobre uma das linhas, abre-se um formulário preenchido com as informações referentes a linha que foi selecionada.
Até aí tudo certo, porém, encontrei um problema, sempre que eu seleciono uma linha X, o formulário abre, preenche as informações, tudo OK, porém, ao selecionar uma linha X-1 (qualquer linha anterior a última linha que selecionei), ocorre algum bug e os valor retornados para o formulário não são correspondentes a linha selecionada. Se eu fecho e seleciono novamente, os dados tornam-se correspondentes novamente.
Além disso, toda vez que seleciono uma linha anterior a última linha selecionada, o programa tem uma leve demora para retornar os dados (provavelmente pelo método find rolar o banco todo em um sentido pra depois retornar o dado), porém, teria como acelerar esse processo?
Segue imagens referentes aos forms e o código utilizado.
Private Sub ListClientes_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Me.MultiPageClientes.Pages(1).Visible = True
Me.MultiPageClientes.Value = 1 ' pula para a pág 2
If ListClientes <> "" Then
With ThisWorkbook.Sheets("BDFUNC").Activate
Cells.Find(ListClientes, ActiveCell, xlValues, xlWhole, xlByRows, xlNext, False, False, True).Activate
TxtRE = Cells(ActiveCell.Row, "A")
TxtNome = Cells(ActiveCell.Row, "B")
TxtNascimento = Cells(ActiveCell.Row, "C")
cmbEstadoCivil = Cells(ActiveCell.Row, "D")
cmbSexo = Cells(ActiveCell.Row, "E")
TxtSangue = Cells(ActiveCell.Row, "F")
TxtDefi = Cells(ActiveCell.Row, "G")
TxtCPF = Cells(ActiveCell.Row, "H")
TxtRG = Cells(ActiveCell.Row, "I")
TxtCTPS = Cells(ActiveCell.Row, "J")
TxtPIS = Cells(ActiveCell.Row, "K")
TxtPassaporte = Cells(ActiveCell.Row, "L")
TxtTelFixo = Cells(ActiveCell.Row, "M")
TxtTelCelular = Cells(ActiveCell.Row, "N")
TxtWhatsapp = Cells(ActiveCell.Row, "O")
TxtEmail = Cells(ActiveCell.Row, "P")
TxtMaeNome = Cells(ActiveCell.Row, "Q")
TxtPaiNome = Cells(ActiveCell.Row, "R")
TxtEndereco = Cells(ActiveCell.Row, "S")
TxtNumero = Cells(ActiveCell.Row, "T")
TxtBairro = Cells(ActiveCell.Row, "U")
TxtCep = Cells(ActiveCell.Row, "V")
TxtEnderecoComplemento = Cells(ActiveCell.Row, "W")
TxtCidade = Cells(ActiveCell.Row, "X")
cmbUF = Cells(ActiveCell.Row, "Y")
TxtAdmissao = Cells(ActiveCell.Row, "Z")
TxtDemissao = Cells(ActiveCell.Row, "AA")
TxtTE = Cells(ActiveCell.Row, "AB")
cmbFerias = Cells(ActiveCell.Row, "AC")
TxtTurno = Cells(ActiveCell.Row, "AD")
TxtJornada = Cells(ActiveCell.Row, "AE")
TxtCargo = Cells(ActiveCell.Row, "AF")
TxtSalario = Cells(ActiveCell.Row, "AG")
TxtBanco = Cells(ActiveCell.Row, "AH")
TxtAgencia = Cells(ActiveCell.Row, "AI")
TxtConta = Cells(ActiveCell.Row, "AJ")
cmbTipoConta = Cells(ActiveCell.Row, "AK")
TxtObservacao = Cells(ActiveCell.Row, "AL")
TxtIdade = Cells(ActiveCell.Row, "AM")
End With
End If
Call Idade
Call TempoEmpresa
End Sub
Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Retornar dados de ListBox para TextBox - Double Click
Re: Retornar dados de ListBox para TextBox - Double Click
LuisHSJ,
Se não estiver utilizando o evento Click do ListClientes, experimente adicionar neste evento a rotina que faz o Find na planilha, exemplo :
Depois, remova a parte do código de busca contido no evento DblCLick do ListClientes e deixe apenas o código referente ao preenchimento dos campos do formulário.
Se possível, disponibilize seu modelo com dados ficticios. Assim podemos melhor lhe ajudar.
Espero ter ajudado.
Abs
Se não estiver utilizando o evento Click do ListClientes, experimente adicionar neste evento a rotina que faz o Find na planilha, exemplo :
Código: Selecionar todos
Private Sub ListClientes_Click ()
Dim vBusca
With ThisWorkBook.Sheets("BDFUNC")
.Activate
With .Range("A:C")
Set vBusca = .Find(ListClientes.List(ListClientes.ListIndex, 0, xlValues, xlWhole)
If Not vBusca Is Nothing Then
.Range(vBusca.Address).Select
'Se preferir, crie um array para armazenar os dados da linha selecionada
'E no evento DblClick, apenas informe quais valores
'vão em cada controle do form
End if
Set vBusca = Nothing
End With
End With
End Sub
Se possível, disponibilize seu modelo com dados ficticios. Assim podemos melhor lhe ajudar.
Espero ter ajudado.
Abs