Notifications
Clear all

duvida nova de escolha de Variavel

11 Posts
3 Usuários
0 Reactions
1,866 Visualizações
(@fazerbem)
Posts: 0
New Member
Topic starter
 

Este comando abaixo funciona bem, por exemplo se a textBox:

Consulta_CPF = 1 ou 40, ou 10000 beleza !

Mas quero que procure um numero de cpf ao ser digitado nesta TextBox como :

00.000.000-00 ou assim 00000000000

Dai da erro, ja vi que é porque uso DIM codigo As Integer, qual devo usar, testei varios, Long, Variant, e todos dao erro.

Erro em tempo de execucao 6 : Estouro

Sub CPF()



Dim Pesquisa
Dim Pesquisa1
Dim Pesquisa2
Dim Pesquisa3
Dim Pesquisa4
Dim Pesquisa5
Dim Pesquisa6
Dim Pesquisa7
Dim Pesquisa8

Sheets("Baixar Estoque").Range("w1") = Consulta_CPF.Value

Dim intervalo As Range
Dim codigo As Integer
codigo = Consulta_CPF.Value

Set intervalo = Sheets("Baixar Estoque").Range("N2:U5000")

Sheets("Baixar Estoque").Activate
           
  Pesquisa = Application.WorksheetFunction.VLookup(codigo, intervalo, 2, False) ' codigo, intervalo, 16, False) 'Cod
  Pesquisa1 = Application.WorksheetFunction.VLookup(codigo, intervalo, 3, False) 'Nome
  Pesquisa2 = Application.WorksheetFunction.VLookup(codigo, intervalo, 4, False)  'Perfil ( Aluno )
  Pesquisa3 = Application.WorksheetFunction.VLookup(codigo, intervalo, 5, False) ' Detalhes ( Parceiro Academia
  Pesquisa4 = Application.WorksheetFunction.VLookup(codigo, intervalo, 6, False) ' Visitas
  Pesquisa5 = Application.WorksheetFunction.VLookup(codigo, intervalo, 7, False)  'Compras
 ' Pesquisa7 = Application.WorksheetFunction.VLookup(codigo, intervalo, 22, False)  'Nutricionista
 ' Pesquisa8 = Application.WorksheetFunction.VLookup(codigo, intervalo, 23, False)  'QNT
  
 TextBox_Codigo = Pesquisa
 TextBox_Nome = Pesquisa1
 TextBox_Perfil = Pesquisa2
 TextBox_Detalhes = Pesquisa3
 TextBox_Visitas = Pesquisa4
 TextBox_Compras = Pesquisa5
 'TextBox_STATUS = Pesquisa6
 'TextBox_Nutricionista = Pesquisa7
 'TextBox_QNT = Pesquisa8


'Sheets("Clientes").Activate

'Set intervalo = Plan4.Range("A3:O5000")

'  Pesquisa6 = Application.WorksheetFunction.VLookup(codigo, intervalo, 10, False) 'Satus

End Sub

Grato

Andre

 
Postado : 21/03/2017 3:28 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Integer só aguenta até 32768... vc precisa usar Long...
Vc diz que testou com Long e dá ero, qual erro?

 
Postado : 21/03/2017 3:30 pm
(@fazerbem)
Posts: 0
New Member
Topic starter
 

mesmo erro

veja

12345678910 da erro de estouro
10000 vai ok

Sub CPF()



Dim Pesquisa
Dim Pesquisa1
Dim Pesquisa2
Dim Pesquisa3
Dim Pesquisa4
Dim Pesquisa5
Dim Pesquisa6
Dim Pesquisa7
Dim Pesquisa8

Sheets("Baixar Estoque").Range("w1") = Consulta_CPF.Value

Dim intervalo As Range
Dim codigo As Long 'Integer
codigo = Consulta_CPF.Value

Set intervalo = Sheets("Baixar Estoque").Range("N2:U5000")

Sheets("Baixar Estoque").Activate
           
  Pesquisa = Application.WorksheetFunction.VLookup(codigo, intervalo, 2, False) ' codigo, intervalo, 16, False) 'Cod
  Pesquisa1 = Application.WorksheetFunction.VLookup(codigo, intervalo, 3, False) 'Nome
  Pesquisa2 = Application.WorksheetFunction.VLookup(codigo, intervalo, 4, False)  'Perfil ( Aluno )
  Pesquisa3 = Application.WorksheetFunction.VLookup(codigo, intervalo, 5, False) ' Detalhes ( Parceiro Academia
  Pesquisa4 = Application.WorksheetFunction.VLookup(codigo, intervalo, 6, False) ' Visitas
  Pesquisa5 = Application.WorksheetFunction.VLookup(codigo, intervalo, 7, False)  'Compras
 ' Pesquisa7 = Application.WorksheetFunction.VLookup(codigo, intervalo, 22, False)  'Nutricionista
 ' Pesquisa8 = Application.WorksheetFunction.VLookup(codigo, intervalo, 23, False)  'QNT
  
 TextBox_Codigo = Pesquisa
 TextBox_Nome = Pesquisa1
 TextBox_Perfil = Pesquisa2
 TextBox_Detalhes = Pesquisa3
 TextBox_Visitas = Pesquisa4
 TextBox_Compras = Pesquisa5
 'TextBox_STATUS = Pesquisa6
 'TextBox_Nutricionista = Pesquisa7
 'TextBox_QNT = Pesquisa8


'Sheets("Clientes").Activate

'Set intervalo = Plan4.Range("A3:O5000")

'  Pesquisa6 = Application.WorksheetFunction.VLookup(codigo, intervalo, 10, False) 'Satus

End Sub
 
Postado : 21/03/2017 3:37 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

em que linha acontece o erro?
tem razão, esse número é maior que um long...

Porém aqui, variant passou, double também...

 
Postado : 21/03/2017 3:38 pm
(@fazerbem)
Posts: 0
New Member
Topic starter
 

Pesquisa = Application.WorksheetFunction.VLookup(codigo, intervalo, 2, False) ' codigo, intervalo, 16, False) 'Cod

 
Postado : 21/03/2017 3:43 pm
(@brunoxro)
Posts: 0
New Member
 

Boa tarde,

Teste declarar a variável 'codigo' como Variant.

Sobre o uso do VLookup do VBA, esse texto é bem esclarecedor: https://excelmacromastery.com/vba-vlookup/

att,

 
Postado : 21/03/2017 3:53 pm
(@fazerbem)
Posts: 0
New Member
Topic starter
 

Ola ja testei tb como variant

 
Postado : 21/03/2017 5:15 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Faltou apenas informar como está na planilha o numero do CPF

 
Postado : 21/03/2017 6:24 pm
(@fazerbem)
Posts: 0
New Member
Topic starter
 

Faltou apenas informar como está na planilha o numero do CPF

Opa, esta dentro de uma textbox sem mascara, digito apenas o número no formulario, no formato 12345678902 ou assim 123.456.789-02 e da no mesmo.
Na planilha formatei a celula como texto, número e nada.

Lembro que se digitar na textbox 10765 por exemplo comando atende.

 
Postado : 21/03/2017 7:13 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Acho que não entendeu minha pergunta, bem como o titulo de sua duvida; não é escolha de variavel mas a correta atribuição de valor/definição dessa variavel.
Voce digita o numero desejado em uma textbox,--> Ok já havia entendido/percebido --> "codigo = Consulta_CPF.Value"
Apos isso vai pesquisar na planilha --> "Application.WorksheetFunction.VLookup(codigo, intervalo, 2, False)"
Se a mensagem de "Estouro" ocorrer já na linha onde o valor de código é assumido ocorre por ser um valor maior que o suportado. Atribuindo Double ou Variant; como disse o colega Fernando; passa (tem que ser aceito pela variável). Não passando o problema deve ser outro.
Poste seu modelo

 
Postado : 22/03/2017 5:40 am
(@fazerbem)
Posts: 0
New Member
Topic starter
 

Pesquisando aqui , ali encontrei outro codigo, dai adaptei e deu certo.
Apenas nao entendi por qual razao o codigo original trabalha sem a DIM C AS Variavel ?

Enquanto no meu fui obrigado a colocar esta DIM.

Seguem os codigos Originais e Adaptado para simples compreensao.

Original usa SET sem declarar a DIm

Private Sub cmdPequisar_Click()
'Verificar se foi digitado um nome na primeira caixa de texto
If txtCPF.Text = "" Then
MsgBox "Digite o CPF de um cliente"
txtCPF.SetFocus
GoTo Linha1
End If
With Worksheets("Dados Clientes").Range("A:A")
Set c = .Find(txtCPF.Value, LookIn:=xlValues, LookAt:=xlPart)
If Not c Is Nothing Then
c.Activate
txtCPF.Value = c.Value
txtNome.Value = c.Offset(0, 1).Value
txtEndereco.Value = c.Offset(0, 2).Value
cboEstado.Value = c.Offset(0, 3).Value
cboCidade.Value = c.Offset(0, 4).Value
txtTelefone.Value = c.Offset(0, 5).Value
txtEmail.Value = c.Offset(0, 6).Value
txtNascimento.Value = c.Offset(0, 7).Value

'Carregando o botão de opção
If c.Offset(0, 8) = "Masculino" Then
OptionButton1.Value = True
Else
OptionButton2.Value = True
End If
Else
MsgBox "Cliente não encontrado!"
End If
End With
Linha1:
End Sub

Adaptado por mim Usa SET E REQUER A DECLACAO DIM

Private Sub Consulte_Click()
Dim C As Variant

'Verificar se foi digitado um nome na primeira caixa de texto
If Consulta_CPF.Text = "" Then
MsgBox "Digite o CPF de um cliente"
Consulta_CPF.SetFocus
GoTo Linha1
End If
Plan3.Activate
With Worksheets("Baixar Estoque").Range("N:N")
Set C = .Find(Consulta_CPF.Value, LookIn:=xlValues, LookAt:=xlPart)
If Not C Is Nothing Then

C.Activate
Consulta_CPF.Value = C.Value
TextBox_Codigo.Value = C.Offset(0, 1).Value
TextBox_Nome.Value = C.Offset(0, 2).Value
TextBox_Perfil.Value = C.Offset(0, 3).Value
TextBox_Detalhes.Value = C.Offset(0, 4).Value
TextBox_Visitas.Value = C.Offset(0, 5).Value
TextBox_Compras.Value = C.Offset(0, 6).Value
'txtEmail.Value = c.Offset(0, 7).Value
'txtNascimento.Value = c.Offset(0, 7).Value

Else
MsgBox "Cliente não encontrado!"
End If
End With
Linha1:
End Sub
 
Postado : 22/03/2017 7:27 am