的IFERROR function不能用作WorksheetFunction object。只要沒有錯誤,公式就會起作用,但當WorksheetFunction.IfError
發揮作用以返回默認值(例如零長度字符串)時將會窒息。
Sub ject()
Dim result As Variant
'this works if a match is found
result = Application.WorksheetFunction.IfError(_
Application.WorksheetFunction.Index(Range("Sheet10!AC40:AC118"), _
Application.WorksheetFunction.Match(Range("Sheet10!E3"), Range("Sheet10!AD40:AD118"), 0)), "")
Debug.Print result
End Sub
您可以嘗試使用Application.Evaluate method代替。
Sub jective()
Dim result As Variant
'this works on match or no match
result = Application.Evaluate("IFERROR(INDEX(Sheet10!AC40:AC118, " & _
"MATCH(Sheet10!E3, Sheet10!AD40:AD118, 0)), ""nothing"")")
Debug.Print result
End Sub
通常情況下,可以有Application.Index(...
或WorksheetFunction.Index(...
但沒有必要Application.WorksheetFunction.Index(...
。
當提到帶有字符串的靜態單元地址時,通常不需要絕對製造商,因爲字符串不會改變。一種可能的例外是,當你使用字符串填充大量的單元格時,沒有從評估一個單一的公式得出結果。
我不相信[IFERROR函數](https://support.office.com/en-us/article/IFERROR-function-F59BACDC-78BD-4924-91DF-A869D0B08CD5)可以用作[ WorksheetFunction對象](https://msdn.microsoft.com/en-us/library/office/ff834434.aspx)。您可以嘗試使用[Application.Evaluate方法](https://msdn.microsoft.com/en-us/library/office/ff193019.aspx)。 – Jeeped
@Jeeped。我剛剛刪除了iferror部分,仍然出現錯誤。相同的語法只是刪除了所有的iferror部分 –