Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Dúvidas sobre cálculos, funções simples e aninhadas, fórmulas matriciais, etc.
  • Avatar do usuário
Por manbat
#32423
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
Por babdallas
#32428
Anexe o arquivo com dados fictícios. Fica mais fácil de ajudar para depurar o código.
Avatar do usuário
Por Reinaldo
Avatar
#32435
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
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord