1
resposta

Problemas com a função replace em código VBA para substituir strings dentro de funções

Eu estou testando uma coisa bem simples.... tenho a seguinte fórmula em uma célula, que é uma fórmula de diferença

=F7-D7

Preciso que a essa fórmula mude para a coluna D ao invés da coluna C, quando o valor for 1 (referente ao 1º quadrimestre do ano) ... a sub serve para mudar a fórmula da coluna G, conforme muda o quadrimestre do ano (1º, 2º ou 3º).

Mas quando rodo a sub, ela subsituiu pelo valor da célula, e não pela mudança que eu esperava na fórmula (esperava mudar para =F7-C7, considernado que a a célula C3 abaixo está com valor 1... Segue o código. Alguém pode me ajudar :) Valeu

Sub Muda_a_Coluna_do_Mes()
    
    'Essa sub serve para mudar a fórmula de acordo com o quadrimestre de referência, uma vez que as colunas do demonstrativo não são fixas_
    'pq tem "Até o 1º Quadrimestre", o "Até o 2º Quadrimestre"  e "Até o 3º Quadrimestre"
    Dim Contador As Integer
    
    'É a linha onde começam as fórmulas
    Contador = 7
    Do Until Contador = 60 'Quanbdo foi feito esse código, o demonstrativo ia até a linha 49, mas deixei até a linha 60 caso coloquem mais linhas por segurança
    
        If Range("C3").Value = 1 Then  'faz o caso para o primeiro bimestre, onde a coluna para fazer a diferença é a "C"
            
            Cells(Contador, 7).Value = Replace(Cells(Contador, 7).Value, "D", "C") 'Casdo a coluna seja a D, troca por C
            Cells(Contador, 7).Value = Replace(Cells(Contador, 7).Value, "E", "C") 'Casdo a coluna seja a E, troca por C
        ElseIf Range("C3").Value = 2 Then
            Cells(Contador, 7).Value = Replace(Cells(Contador, 7).Value, "C", "D") 'Caso a coluna seja a C, troca por D
            Cells(Contador, 7).Value = Replace(Cells(Contador, 7).Value, "E", "D") 'Caso a coluna seja a E, troca por D
        ElseIf Range("C3").Value = 3 Then
            Cells(Contador, 7).Value = Replace(Cells(Contador, 7).Value, "C", "E") 'Caso a coluna seja a C, troca por E
            Cells(Contador, 7).Value = Replace(Cells(Contador, 7).Value, "D", "E") 'Caso a coluna seja a E, troca por E
        End If
    
    Contador = Contador + 1
    Loop
    

End Sub
1 resposta

Oii, Leonardo! Como vai?

O .Value está adicionando o resultado da célula e não da fórmula, nesse caso uma alternativa é testar o .Formula para que fazer as substituições que deseja na fórmula.

Segue um artigo para te ajudar nos estudos:

Espero que a sugestão te ajude. Continue se dedicando aos estudos e conte com o fórum para te ajudar.

Bons estudos, Leonardo!