Notifications
Clear all

Procv no VBA

8 Posts
2 Usuários
0 Reactions
1,411 Visualizações
(@tiamun)
Posts: 0
New Member
Topic starter
 

Bom dia!

Preciso saber como transformar esta provc, =SE(E3>0;PROCV(A3;Usuarios!$1:$1048576;2;FALSO);" ") em um VBA.

Ela está localizada no D3 e vai até o d200. ou seja:

=SE(E3>0;PROCV(A3;Usuarios!$1:$1048576;2;FALSO);" ")
=SE(E4>0;PROCV(A3;Usuarios!$1:$1048576;2;FALSO);" ")

Utilizo esta formula pois quero que apresente a procv somente de E estiver preenchido, se nao estiver preenchido quero que a celula fique em branco (nada preenchido), porem se estiver preenchida ele ativa a procv. A3;Usuarios!$1:$1048576;2;FALSO

por vba eu nao sei se é necessário usar o SE.

alguem pode me ajudar?

 
Postado : 01/12/2014 7:10 am
(@gtsalikis)
Posts: 2373
Noble Member
 

A tua dúvida está com vários problemas:

1. vc quer inserir a fórmula via VBA, ou vc quer inserir o resultado via VBA?

2. vc quer lopar todas as colunas uma vez só, ou vc quer que o resultado apareça somente quando preencher alguma informação?

3. O teu range do PROCV está errado na parte vermelha:
=SE(E3>0;PROCV(A3;Usuarios!$1:$1048576;2;FALSO);" ")

4. Esses resultados (ou a fórmula) vão aparecer onde?

Sub confuso_GT()

If Not IsEmpty(Range("E3")) Then
    Range("F3") = Application.WorksheetFunction.VLookup(Range("A3"), Sheets("Usuarios").Range("A1:B" & Rows.Count), 2, 0)
End If

End Sub

Veja tb:
viewtopic.php?p=68858#p68858

 
Postado : 01/12/2014 7:57 am
(@tiamun)
Posts: 0
New Member
Topic starter
 

Amigo, funciona assim, sempre que a coluna E for preenchida ele busca o resultado da procv e preenche o resultado na coluna D.
Eu preciso do resultado da procv.
Tipo preenchendo
d3
d4
d5...

e etc...

No post não expliquei direito.

 
Postado : 01/12/2014 9:19 am
(@tiamun)
Posts: 0
New Member
Topic starter
 

Pessoal consegui resolver da seguinte forma.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 Then
Cells(Target.Row, 4).Value = Application.WorksheetFunction.VLookup(Range("A3"), Sheets("Usuarios").Range("A1:B" & Rows.count), 2, 0)
End If
end sub
Preciso agora apenas mais um auxilio.

Ao preencher a celula já ativa e da o resultado da procv, porem a duvida é, se eu apagar o que está na celula E como faço para que por vba automaticamente apague os resultados em A, B, C, D?

Podem me ajudar?

 
Postado : 01/12/2014 10:03 am
(@tiamun)
Posts: 0
New Member
Topic starter
 

Pessoal consegui resolver da seguinte forma.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 Then
Cells(Target.Row, 4).Value = Application.WorksheetFunction.VLookup(Range("A3"), Sheets("Usuarios").Range("A1:B" & Rows.count), 2, 0)
End If
end sub
Preciso agora apenas mais um auxilio.

Ao preencher a celula já ativa e da o resultado da procv, porem a duvida é, se eu apagar o que está na celula E como faço para que por vba automaticamente apague os resultados em A, B, C, D?

Podem me ajudar?

 
Postado : 01/12/2014 10:04 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Se ajudou, por favor, clique na mãozinha.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 5 Then
        If IsEmpty(Target) Then
            Range(Cells(Target.Row, 1), Cells(Target.Row, 4)).ClearContents
        Else
            Cells(Target.Row, 4).Value = Application.WorksheetFunction.VLookup(Range("A3"), Sheets("Usuarios").Range("A1:B" & Rows.Count), 2, 0)
        End If
    End If
End Sub
 
Postado : 01/12/2014 10:17 am
(@tiamun)
Posts: 0
New Member
Topic starter
 

Resolvida a questão de apagar outras celulas se a celula 5 tiver seu valor apagado.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 Then
If Target.Value = Empty Then
Call ApagaA
End If
end sub

em outro bloco coloquei o codigo.
Sub ApagaA()
'percorre da linha 2 até a última preenchida em A
For i = 5 To Cells(Rows.count, 1).End(xlUp).Row
'se em B for vazio
If Cells(i, 5) = "" Then
'apaga conteúdo de A
Cells(i, 1).ClearContents
Cells(i, 2).ClearContents
Cells(i, 3).ClearContents
Cells(i, 4).ClearContents
Cells(i, 6).ClearContents
Cells(i, 7).ClearContents
Cells(i, 8).ClearContents
Cells(i, 9).ClearContents
Cells(i, 13).ClearContents
Cells(i, 14).ClearContents
Cells(i, 15).ClearContents
End If
'próxima linha
Next i
End Sub

 
Postado : 01/12/2014 11:24 am
(@tiamun)
Posts: 0
New Member
Topic starter
 

Pessoal mais um problema. preciso que a fonte de pesquisa do Procv no VBA seja mudada conforme a celula que vou utilizar.

Ex: Cells(Target.Row, 3).Value = Application.WorksheetFunction.VLookup(Range("A"), Sheets("Usuarios").Range("A1:B" & Rows.count), 2, 0)

Range Precisa ser sempre o que estiver no A. se eu estiver na celula D4 ele vai puxar o resultado de A4 se for D10 ele vai pegar o resultado de A10.

Consegue me ajudar?

 
Postado : 01/12/2014 11:54 am