2016-12-06 38 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,如果使用';' 。 –