Notifications
Clear all

Preencher Valores VBA

4 Posts
2 Usuários
0 Reactions
886 Visualizações
 guma
(@guma)
Posts: 135
Estimable Member
Topic starter
 

Boa Tarde

Mais um problema- estou tentando criar um código para procurar e prencher valores.
cheguei ao seguinte código com informações da Internet - so que devido a minha falta de experiência não consegui sair disto.
o problema é o seguinte ele está fazendo a comparação correta mas não consegui fazer ele trazer o valor.

o código tem de fazer o Seguinte procurar o valor da coluna F a Partir da Linha 120 até a ultima linha na coluna D de uma 2º planilha da 4º linha até a ultima
se ele encontrar eu quero que ele copie o valor da coluna H da planilha 2 e cole na coluna I da planilha 1 e assim sucessivamente. são doze colunas que ele tem de fazer este procedimento cada uma corresponde a um mês.

Eu Sei que a maioria vai pensar "Procv" , sim daria Certo o problema é que esta planilha esta sempre semto modificada e seria bem mais facil modificar um código do que conferir um montão de células para verificar se a forma está correta.

Help!!!!

Sub fMain()
    Dim lng As Long

    Dim wks1 As Worksheet
    Dim wks2 As Worksheet

    Set wks1 = ThisWorkbook.Sheets("BALANÇO E DRE ACUMULADO MENSAL")
    Set wks2 = ThisWorkbook.Sheets("DRE")

    With wks1
        For lng = 120 To .Cells(.Rows.Count, "F").End(xlUp).Row
            If Not IsError(Application.Match _
            (.Cells(lng, "F"), wks2.Columns("D"), 0)) Then
                
                wks1.Cells(lng, "I") = wks2.Columns("H")
                wks1.Cells(lng, "O") = wks2.Columns("I")
                wks1.Cells(lng, "U") = wks2.Columns("J")
                wks1.Cells(lng, "AA") = wks2.Columns("K")
                wks1.Cells(lng, "AG") = wks2.Columns("L")
                wks1.Cells(lng, "AM") = wks2.Columns("M")
                wks1.Cells(lng, "CJ") = wks2.Columns("N")
                wks1.Cells(lng, "CP") = wks2.Columns("O")
                wks1.Cells(lng, "CV") = wks2.Columns("P")
                wks1.Cells(lng, "DB") = wks2.Columns("Q")
                wks1.Cells(lng, "DH") = wks2.Columns("R")
                wks1.Cells(lng, "DN") = wks2.Columns("S")

            
            Else
        
            End If
        Next lng
    End With
End Sub
 
Postado : 16/04/2013 2:05 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Guma, vc "diz" que se achar faça wks1 = wks2.columns("H") "por exemplo", ´porem isso não identifica o endereço da celula (coluna e linha)

Experimente (altere para as demais:

 ....  With wks1
        For lng = 120 To .Cells(.Rows.Count, "F").End(xlUp).Row
            If Not IsError(Application.Match _
            (.Cells(lng, "F"), wks2.Columns("D"), 0)) Then
'Identifica em qual linha foi encontrado o valor          
nl = Application.Match(.Cells(lng, "F"), wks2.Columns("D"), 0)
                wks1.Cells(lng, "I") = wks2.Range("H" & nl)
.....
 
Postado : 16/04/2013 2:20 pm
 guma
(@guma)
Posts: 135
Estimable Member
Topic starter
 

Boa Noite

Reinaldo Muito obrigado era isso mesmo.
é que eu não tinha a menor ideia de como identificar a linha onde ele localizou o valor.

Me indica algum livro ou curso de VBA???
Eu Trabalho com contabilidade, mas se for ver eu passo mais tempo no Excel do que no programa de contabilidade do escritório.

Obrigado mais uma vez e att.

 
Postado : 16/04/2013 5:02 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Talvez a topico viewtopic.php?f=33&t=2268 / viewtopic.php?f=33&t=520 , eu particularmente não li nenhum livro, o pouco que sei foi fazendo.

 
Postado : 17/04/2013 5:05 am