TmT*_*ron 6 delphi excel automation vba excel-vba
我尝试设置一系列不同的公式,但它不适用于Delphi.
为了说明这一点,我有一些可以直接在Excel中执行的VBA测试代码:
Public Sub Test()
Range(Cells(1, 1), Cells(1, 1)).Formula = "=Complex(1, 1.2)"
Dim vFormula(1 To 2) As Variant
vFormula(1) = "=Complex(0, 0.1)"
vFormula(2) = "=Complex(1, 1.2)"
Range(Cells(2, 1), Cells(2, 2)).Formula = vFormula
End Sub
Run Code Online (Sandbox Code Playgroud)
它按预期工作:
笔记:
A1含有单一的配方A2,B2使用变量数组的字符串进行一次调用Complex中以德语显示KOMPLEXE- sweet现在我尝试通过Delphi做同样的事情:
procedure TForm1.btnAddRangeFormulasClick(Sender: TObject);
var
I: Integer;
VarArr: Variant;
begin
FWorksheet.Range['A1', 'A1'].Formula := '=Complex(1, 1.2)';
VarArr := VarArrayCreate([0, 1], varOleStr);
VarArrayPut(VarArr, '=Complex(0, 0.1)', [0]);
VarArrayPut(VarArr, '=Complex(1, 1.2)', [1]);
FWorksheet.Range['A2', 'B2'].Formula := VarArr;
end;
Run Code Online (Sandbox Code Playgroud)
但这不能按预期工作:
笔记:
A1按预期工作A2,B2还没有被转换任何想法我做错了什么以及如何解决这个问题?
我在用:
另一个尝试是在Delphi中使用Locale依赖公式:
procedure TForm1.btnAddRangeFormulasGerClick(Sender: TObject);
var
VarArr: Variant;
begin
FWorksheet.Range['A1', 'A1'].Formula := '=Komplexe(1, 1.2)';
VarArr := VarArrayCreate([0, 1], varOleStr);
VarArrayPut(VarArr, '=Komplexe(0, 0.1)', [0]);
VarArrayPut(VarArr, '=Komplexe(1, 1.2)', [1]);
FWorksheet.Range['A2', 'B2'].Formula := VarArr;
end;
Run Code Online (Sandbox Code Playgroud)
这也不会立即起作用:
笔记:
#NameFormulaLocal而不是时,它也不起作用Formula我必须像这样创建varVariant(而不是varOleStr)的变体数组:
VarArrayCreate([0, 1], varVariant);
Run Code Online (Sandbox Code Playgroud)
然后,我所有的用例都包括自动公式翻译工作!
谢谢@Vityata