2016-12-06 40 views
0

我试图构建一个要插入到工作表中动态大小表格的许多单元格中的公式。这种评价String可以传递给MsgBox没有问题:VBA无法将“= IF()”传入范围()。公式

Tmp2 = "=IF(" & Worksheets(Sh).Range("H9").Offset(i, 0).Address & _ 
     " = """";0;DAYS(" & Worksheets(Sh).Range("H9").Offset(i, 0).Address & _ 
     ";" & Worksheets(Sh).Range("G9").Offset(i, 0).Address & "))" 
MsgBox Tmp2 

MSGBOX

但是当我尝试使用它在.Formula属性是这样的:

Sheets("Temp").Range("I9").Offset(i, 0).Formula = Tmp2 

我得到这个错误:

Error

我在做什么错?

+0

您使用的是什么Wxcle?什么是'DAYS'功能? –

+2

您需要使用[FormulaLocal](https://msdn.microsoft.com/en-us/library/office/ff838851.aspx)和';'参数分隔符。 – Comintern

+0

@Comintern有帮助。谢谢!你能在答案中解释发生了什么以及为什么它有帮助吗? PS:我在我的公式中使用了';'。该公式在使用VBA之前已经过手动测试 – InnerBushman

回答

0

这是给出'Sh'是一个变量中的数字。 我注意到,也在具有不同国家设置的计算机上,使用“;”在公式中,公式适用于“,”。

Tmp2 = "=IF(" & Worksheets(Sh).Range("H9").Offset(i, 0).Address & _ 
     " = """",0,DAYS(" & Worksheets(Sh).Range("H9").Offset(i, 0).Address & _ 
     "," & Worksheets(Sh).Range("G9").Offset(i, 0).Address & "))" 
MsgBox Tmp2 
Worksheets("Temp").Range("I9").Offset(i, 0).Formula = Tmp2 
+0

我的语言环境是英语。如果手动输入此字符串中的公式,则工作正常。如果我从字符串中删除第一个'='符号,除非公式未被解析(由于缺少'='),否则一切正常。 'Sh'是'String'和'Worksheets(Sh).Name'返回我期望的表名。 – InnerBushman

+1

没错,所以要么使用.Formula,要么使用','或者使用.FormulaLocal,如果使用';' 。 –