Macro Inserir formula com variável

Ola pessoal, Preciso colocar duas variaveis para linha e coluna ao inserir formula em uma celula. Segue a macro abaixo. Se alguem puder me ajudar agradeco.

Sub calculo
Dim oDoc As Object, oPlan as Object, oCelula As Object
oDoc = ThisComponent
lin  = 15
col = 6

while oPlan.GetCellByPosition(4,lin).String<>""
     oCelula = oPlan.GetCellByPosition(col,lin)
     
     oCelula.FormulaLocal = "SOMA(F16*1)" 

’ NO LUGAR DE F16 PRECISO COLOCAR UMA VARIAVEL PARA RODAR O LOOP TANTO PARA A LINHA QUANTO PARA A COLUNA. ASSIM DA ERRO : “=SOMA((col,lin)*1)”

Obrigado.

Ola @Seiki2000, coloque a formula em uma célula, na macro copia e cola onde quiser.

Por exemplo na célula A15 tem a fórmula =A14*1 , se uma macro copiar A15 e colar em B15 a formula mudara para =B14*1

Segue arquivo do teste.|attachment

A macro foi feita pelo gravador, dando uma limpada, fica assim:

sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "fonte"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
end sub

Uma sugestão após ver o arquivo.

'----------------------------------------------------------------
sub InserirFormula
'----------------------------------------------------------------
'A coluna a esquerda desta célula não pode ter celula em BRANCO  |
'Para funcionar na primeira célula deve-se colocar a FORMULA     | 
'E as abaixo tem que estar vazias                                |
'Clique na célula que colocou a FORMULA e acione esta MACRO      |
'----------------------------------------------------------------
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:GoDownToEndOfData", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:GoUpToStartOfDataSel", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
end Sub

.

Nao deu certo amigo.
Ela copia apenas o valor do resultado.

Anexei arquivo teste na Resposta acima.

mais uma vez obrigado. agora é quebrar a cabeça para encaixar isso na minha macro.Esperava algo mais simples com variaveis.

Vide acima a macro limpa.

Vendo o arquivo, fica mais fácil dar uma sugestão melhor.

Se puder enviar: gilberto@schiavinatto.com

obrigado, enviei por email.

Devolvida…

Obrigado de novo. Mas ficou inviável colocar ela na minha macro. Ainda preciso dessa variável ou de uma solução que não seja gerada através do gravador de macro.

Se o arquivo que enviou representa o seu arquivo real, a minha macro substitui a sua na pergunta, não e para juntar ?

Olá pessoal,consegui a solução para essa questão. Como pode ser a dúvida de outra pessoa segue a macro:

Sub INSERIRFORMULA

oDoc = ThisComponent

oPlan = oDoc.GetSheets().GetByName("Planilha1")

Dim formula as String

lin = 2

while oPlan.GetCellByPosition(1,lin).string <> ""

formula = "=B" & lin + 1 & "*C" & lin + 1  

oPlan.GetCellByPosition(3,lin).setFormula(formula)

lin = lin + 1

wend

End Sub