解決方法:問題是在我的公式中,我使用INDIRECT()引用單元格,當sheet不同時它不工作。見答案。Excel VBA從另一個工作表評估公式
我在一張紙上有一個公式,我想要做的是使用另一張紙上的公式,使用eval來評估公式。但是,結果並非如預期的那樣。這似乎是式是使用在值表A的代替呼叫者表B.
式在片材A(參見:Screenshot Sheet A)
=IF(ISERROR(INDEX('1516Activity'!$B:$B,MATCH(INDIRECT(ADDRESS(ROW(),COLUMN(D:D))),'1516Activity'!$C:$C,0))),"-",IF(LEFT(INDEX('1516Activity'!$F:$F,MATCH(INDIRECT(ADDRESS(ROW(),COLUMN(D:D))),'1516Activity'!$C:$C,0)))="0","N","Y"))
在片B使用(請參見:Screenshot Sheet B)
=Eval('CODE-VARS'!$G$5)
VBA:
Function Eval(Ref As String)
Application.Volatile
Eval = Application.ThisCell.Parent.Evaluate(Ref)
End Function
不能使用激活UDF –
正確內。我正在考慮'Sub'。 – yk11
@CharlesWilliams @ yk11 使用我提到的函數,我添加了這個: 'MsgBox ActiveSheet.Name' 它顯示調用者工作表名稱。所以我認爲它不是這個問題。它可能是我的公式中的某些參考值,而不是調用者/活動工作表的參考值? 'INDIRECT(地址(行(),列(D:D)))' –