2016-03-09 174 views
2

我創建了一個按鈕,它將新的作業條目添加到我的作業數據庫中。根據Cells (emptyRow,40)中的值,用查找的Vlookup 「工作類別」工作表並輸出結果​​。因此,每個我增加了新入職的時候,我想Cells(emptyRow,43)輸入公式,告訴我什麼樣的工作,這屬於下,如下圖所示需要幫助使用VBA輸入If和Vlookup公式到單元格中

Dim emptyRow As Long 
emptyRow = Range("Z100000").End(xlUp).Offset(1, 0).Row 
Cells(emptyRow, 43).Formula = "=IF(Cells(emptyRow,40)=0, "", VLOOKUP(Cells(emptyRow,40),'Job Category'!$G$10:$I$12, 3, TRUE))" 

不過,我得到這個消息:"Run-time error '1004' : Application-defined or object-defined error."

任何人都知道爲什麼?

回答

2

您正在混合使用工作表函數語法和VBA語法。雖然您可以使用WorksheetFunction object來返回VLOOKUP function的結果,但您似乎希望將公式寫入單元格。由於emptyRow變量,這可能會更好,因爲xlR1C1樣式公式。

'as an xlA1 style 
Cells(emptyRow, 43).Formula = _ 
    "=IF(AN" & emptyRow & "=0, """", VLOOKUP(AN" & emptyRow & ",'Job Category'!$G$10:$I$12, 3, TRUE))" 
'as an xlR1C1 style 
Cells(emptyRow, 43).FormulaR1C1 = _ 
    "=IF(RC40=0, """", VLOOKUP(RC40, 'Job Category'!R10C7:R12C9, 3, TRUE))" 

請記住,如果在引用字符串中包含引號,則需要將引號加倍。

+0

完美的作品!謝謝你和其他人的幫助! – Stu

1
Dim emptyRow As Long, addr as string 
emptyRow = Range("Z100000").End(xlUp).Offset(1, 0).Row 
addr = Cells(emptyRow,40).Address() 

Cells(emptyRow, 43).Formula = "=IF(" & addr & "=0, """", VLOOKUP(" & _ 
           addr & ",'Job Category'!$G$10:$I$12, 3, TRUE))" 
+0

錯過了。謝謝 –

+0

謝謝!!!!!!!! – Stu

0

您可以使用IFERROR爲好,

Sub Button1_Click() 
    Dim emptyRow As Long 

    emptyRow = Cells(Rows.Count, "Z").End(xlUp).Row + 1 
    Cells(emptyRow, 43).Formula = "=IFERROR(VLOOKUP(AN" & emptyRow & ",'Job Category'!$G$10:$I$12,3,1),"""")" 

End Sub 
+0

謝謝!!!!!!!! – Stu