Notifications
Clear all

Estrutura de repetição

5 Posts
2 Usuários
0 Reactions
1,066 Visualizações
(@ericksant)
Posts: 109
Estimable Member
Topic starter
 

Olá,
bom dia!

Uma nova dúvida pessoal, novamente com estrutura de repetição... A lógica seria a seguinte, caso tenha valor na coluna crédito, acrescentar a letra C no final do valor e recortar esse valor e colar na coluna de débito, fazer isso até a última linha com conteúdo. Já na coluna débito, caso tenha valor, acrescentar a letra D somente, também até a última linha...

Vendo meu anexo acredíto que fica mais fácil de entender.

Tentei realizar isso, mas meu código não ta funfando, to errando na parte de acrescentar a letra C no final do valor, segue:

Sub teste()


Dim lLastrow As Long



lLastrow = Sheets("Planilha1").Range("E" & Rows.Count).End(xlUp).Row
    
    For i = 2 To lLastrow
    
        If Right(Cells(i, 5).Value, 1) <> "" Then
        
            Cells(i, 5).Value = ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 = "=RC[-1]&""C"""
            
        End If
    
    Next i

End Sub

Alguém consegue me ajudar ?

Obrigado!

 
Postado : 27/07/2018 6:52 am
gfranco
(@wzxnet7)
Posts: 653
Honorable Member
 

Amigo, veja se o que fiz te ajuda.

Resposta útil? Clique na mãozinha ao lado do botão Citar.

 
Postado : 27/07/2018 7:12 am
(@ericksant)
Posts: 109
Estimable Member
Topic starter
 

Era isso mesmo cara, se for possível, conseguiria mandar esse código comentado, seria mais para eu estudar ele...

Muito obrigado cara!

Resolvido!

 
Postado : 27/07/2018 8:33 am
gfranco
(@wzxnet7)
Posts: 653
Honorable Member
 

Boa tarde.

Feito conforme pedido.

Sub planilhando29121()

    Dim uls() As Long 'variável de matriz para armazenar as últimas linhas de cada coluna
    Dim c As Long 'variável de loop para percorrer as colunas
    Dim maxlin As Long 'variável para identificar o maior valor armazenado na matriz uls
    Dim w As Worksheet 'variável para manipular a planilha (eu prefico nomear a planilha e usar direto o codename da planilha)
    Dim i As Long 'variável de loop para percorrer as linhas
    Dim vldeb As Variant, vlcred As Variant 'variáveis para receber os valores das colunas de crédito e débito
    
    
    Set w = Planilha1 'para manipular a planilha a variável precisa set instanciada com o comando set
    ReDim uls(1 To 2) 'como vou armazenar dois valores, redimensiono a matriz para 2 posições
    
    
        For c = 4 To 5 'percorrendo as duas colunas e armazenando o valor da última linha preenchida (de cada coluna) na matriz
        
            uls(c - 3) = w.Cells(w.Rows.Count, c).End(3).Row 'como a matriz foi redimensionada para duas posições (1 e 2) é preciso _
            informar a posição em que cada item será colocado na matriz
        
        Next c
    
    
    maxlin = WorksheetFunction.Max(uls) 'verificando qual o maior valor de última linha preenchida
    
    If maxlin < 2 Then GoTo saida 'se não houver dados, saí da rotina
    
        For i = 2 To maxlin 'início do loop pelas linhas
        
        vldeb = w.Cells(i, 4) 'preenchendo as variáveis com os valores das colunas "D" e "E" (4 e 5, respectivamente)
        vlcred = w.Cells(i, 5)
        
        'A lógica seria a seguinte, caso tenha valor na coluna crédito,
        'acrescentar a letra C no final do valor e recortar esse valor e
        'colar na coluna de débito, fazer isso até a última linha com conteúdo.
        'Já na coluna débito, caso tenha valor, acrescentar a letra D somente, também até a última linha...
        
        
            If VBA.Len(vlcred) > 0 Then ' a função len verifica quantos caracteres tem na variável... se tiver mais que zero é sinal _
            que tem alguma coisa digitada na célula
            
                w.Cells(i, 4) = vlcred & "C"
                
                w.Cells(i, 5) = ""
            
            
            ElseIf VBA.Len(vldeb) > 0 Then
            
            
                w.Cells(i, 4) = vldeb & "D"
            
            
            End If
        
        
        Next i
    
    
saida:
    
    
    Set w = Nothing 'importante retirar a instanciação deste tipo de variável no final do código.
    
    Erase uls 'importante "matar" a matriz no final do código.
   
End Sub

Resposta útil? Clique na mãozinha ao lado do botão Citar.

 
Postado : 27/07/2018 9:55 am
(@ericksant)
Posts: 109
Estimable Member
Topic starter
 

Cara... Perfeito! Muito obrigado pela ajuda e pelo código comentado!!

 
Postado : 27/07/2018 11:11 am