Página 1 de 1

Colocar fórmula em célula com VBA

Enviado: 25 Abr 2018 às 20:36
por manbat
Bom dia, Boa tarde ou Boa noite, de acordo com a hora a que visualizem isto.
Estou a tentar colocar uma fórmula numa célula de de uma folha (planilha) de Excel através do VBA, mas sempre obtenho erro. e não consigo descobrir o defeito do programa. Aqui está o que fiz até agora:

Dim wbTarget As Workbook 'workbook where the data is to be copied
Dim wbThis As Workbook 'workbook from where the data is to be pasted
Dim strName As String 'name of the source sheet/ target workbook
Dim caminho As String 'path of books
Dim linha As Integer 'linha a tratar
Dim coluna As Integer
Dim coluna_a As Integer
Dim mes As String
Dim mes_a As String
Dim FormulaFinal As String
Dim resto_nome As String
Dim contribuinte As String
Dim contribuintef As Double

Private Sub Workbook_Open()

Range(“A3100”).Select
If Range(“A3100”).Value = “SIM” Then Exit Sub
servico = Range(“A3101”).Value
Set wbThis = ActiveWorkbook
wbThis.Sheets(“GESTÃO < 2998 Executados”).Select
strName = ActiveSheet.Name
mes = Month(Date)
If mes < 10 Then mes = “0” & mes
mes_a = (Month(Date)) - 1
If mes_a < 10 Then mes_a = “0” & mes_a
Application.DisplayAlerts = False
caminho = Application.ActiveWorkbook.Path
Set wbThis = ActiveWorkbook
'ActiveWorkbook.ExclusiveAccess

resto_nome = "CARTEIRA DE GESTAO " & servico & “_” & mes_a & “.xlsm”

'############################################

FormulaFinal = “=ÍNDICE(’” & caminho & “[” & resto_nome & “]” & strName
FormulaFinal = FormulaFinal & “’!$A$1:$BZ$3100;CORRESP($B2;’” & caminho & “[” & resto_nome & “]” & strName
FormulaFinal = FormulaFinal & “’!$B:$B;0);CORRESP(”“HISTÓRICO”";’"
FormulaFinal = FormulaFinal & caminho & “[” & resto_nome & “]” & strName & “’!$1:$1;0))”

mensagem = MsgBox("A fórmula é " & FormulaFinal, vbOKOnly)

coluna = Application.Match(“HISTÓRICO”, Rows(1), 0)
linha = 2

Sheets(strName).Select
Sheets(strName).Activate
Range("AQ2").Select
Range("AQ2").Activate

ActiveSheet.Cells(linha, coluna).FormulaR1C1 = FormulaFinal
End sub

Alguém me consegue ajudar?

Obrigado antecipadamente

Manbat

Re: Colocar fórmula em célula com VBA

Enviado: 26 Abr 2018 às 00:13
por babdallas
Anexe o arquivo com dados fictícios. Fica mais fácil de ajudar para depurar o código.

Colocar fórmula em célula com VBA

Enviado: 26 Abr 2018 às 09:25
por Reinaldo
ActiveSheet.Cells(linha, coluna).FormulaR1C1 = FormulaFinal
a sintaxe para FormulaR1C1 (linhaColuna)requer que os endereços seja passados estilo ="R[1]C[1]"
Assim supondo que sua celula ativa seja B7 e deseja passar a formula =C3,
em vba sua linha de codigo seria:ActiveCell.FormulaR1C1 = "=R[-4]C[1]"

Outra possibilidade é utilizar ActiveSheet.Cells(linha, coluna).Formula = FormulaFinal; porem a sintaxe para Formula requer que as funções contidas na formula seja declaradas/escritas em Ingles
Por exemplo: Soma de A1:A3 deve ser declarada Sum(A1:A3)
em vba sua linha de codigo seria: ActiveCell.Formula = "=SUM(A1:A3)"
Outra possibilidade é utilizar ActiveCell.Formula.Local = "=SOMA(A1:A3)"
onde formula loca e similar a formula, com a vantagem de utizar nome das funçoes na lingua do aplicativo, em nosso caso Portugues

Re: Colocar fórmula em célula com VBA

Enviado: 26 Abr 2018 às 19:39
por manbat
Obrigado a todos os que tentaram ajudar. A solução era substituir a expressão "FormulaR1C1" por "FormulaLocal". Já está a funcionar.