2014-10-08 72 views
1

我有以下線在我的VBA代碼結腸中FormulaR1C1

[A1].FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-4],Rates!A:H,3,FALSE),"""")" 

運行時,它在Excel中創建此:

=IFERROR(VLOOKUP(A8,Rates!A:(H),3,FALSE),"") 

我不知道爲什麼「H」中顯示出來括號。當然這個公式不起作用。當我刪除括號時,它確實有用。但是,如何讓VBA首先正確創建公式?

回答

0

原因很簡單實際。一方面你說的是.FormulaR1C1,另一方面你使用這兩種表示法。堅持要麼R1C1A1

那麼試試這個

[A1].FormulaR1C1 = "=IFERROR(VLOOKUP(R[7]C,Rates!C:C[7],3,FALSE),"""")" 

[A1].Formula = "=IFERROR(VLOOKUP(A8,Rates!A:H,3,FALSE),"""")" 
0

試圖用VBA編寫VLOOKUP會因爲某種原因而陷入這種怪事。解決此問題的最佳方法是編寫代碼來命名該範圍,然後在VLOOKUP中使用該名稱。

ActiveSheet.Names.Add Name:="VLRange", RefersTo:="=Rates!" & Range(Cells(1, 1), Cells(lastrow, 1)).Address 

那麼你的公式,編寫代碼是

[A1].FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-4],VLRange,3,FALSE),"""")" 
+0

'運行到這樣的怪事很多關於一些reason..'沒有什麼奇怪的吧:) VBA像其他任何編程語言一樣,盡最大努力來執行你所說的內容。如果你發出錯誤的命令,它會出錯或給你錯誤的結果。 – 2014-10-08 18:53:07