Retornar dados de ListBox para TextBox - Double Click
Enviado: Ter Abr 30, 2019 9:35 am
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
É 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