Formula gerada em macro retorna #NOME?

Estou tentando atribuir uma fórmula a uma célula através de macro.

Porém, apesar da fórmula aparecer corretamente na célula, o Calc interpreta como string, retornando o erro “#NOME?”. Se apago qualquer caractere manualmente na célula e o reinsiro e em seguida aperto enter, ele interpreta como fórmula e retorna o resultado almejado.

Segue planilha:

AskLibreOffice_FórmulaRetornaNOME.ods

Segue macro adaptada:

Sub AskLibreOffice
Dim Doc As Object
Dim Sheet As Object

Doc = ThisComponent
Sheet = Doc.Sheets.getByName("Sheet1")

rem n, j e MyArray são resultados de outras macros
Dim n As Integer
Dim j As Integer

n = 2

Dim MyArray(n) As String

MyArray(0) = "String0"
MyArray(1) = "String1"
MyArray(2) = "String2"

For j = 0 to n
    Sheet.getCellByPosition(0, j).setString(MyArray(j))

    formula = "=PROCV(C" & j+1 & ";C1:D3;2;0)"

    Sheet.getCellByPosition(0, j).setFormula(formula)
Next j
End Sub

Versão: 6.4.0.3 (x64)

ID de compilação: b0a288ab3d2d4774cb44b62f04d5d28733ac6df8

Threads da CPU: 4; SO: Windows 10.0 Build 18362; Realizador da interface: padrão; VCL: win;

Local: pt-BR (pt_BR); Idioma de IU: pt-BR

Calc: threaded

Ola @Filipe2, seja bem vindo ao Grupo.

Na formula =PROCV(A" & j & ";AA12:AE14;2;0) coloque 0 (zero no final) caso contrario é obrigatório lista estar ordenada crescente.

É possível postar um arquivo exemplo ? ( Se SIM, edite a pergunta e use o ícone clipe para anexar o arquivo )


ATENÇÂO:: Para dar mais detalhes a sua pergunta, use Descrição da imagem na pergunta ou Descrição da imagem abaixo. Não use Adicionar resposta para comentário. Grato.

@Filipe2, seja bem vindo.

Como estamos falando da fórmula escrita no VBA do LibreOffice, as fórmulas mesmo dentro das aspas “” devem ser escritas em inglês, neste caso VLOOKUP.

Portanto, segue macro corrigida, e com uma adaptação para sua range.

Sub AskLibreOffice
Dim Doc As Object
Dim Sheet As Object
Dim Range as String

Doc = ThisComponent
Sheet = Doc.Sheets.getByName("Sheet1")

rem n, j e MyArray são resultados de outras macros
Dim n As Integer
Dim j As Integer

n = 2
Range = "$C$1:$D$4"
Dim MyArray(n) As String

MyArray(0) = "String0"
MyArray(1) = "String1"
MyArray(2) = "String2"

For j = 0 to n
    Sheet.getCellByPosition(0, j).setString(MyArray(j))

    formula = "=VLOOKUP(C" & j+1 & ";" & Range & ";2;0)"

    Sheet.getCellByPosition(0, j).setFormula(formula)
Next j
End Sub

Fiz a modificação sugerida (troquei PROCV por VLOOKUP) e funcionou. Obrigado.