我正在嘗試創建一個 UDF 來替換 INDIRECT 函式以在 COUNTIFS 函式中使用以允許動態范圍。
目標:
當前的:
=countifs(indirect([cell reference to named range],[criteria1]...)
我正在努力實作:
=countifs(INDIRECTVBA([cell reference to named range],[criteria1...)
該函式目前回傳#VALUE。
這是我的 VBA:
Public Function INDIRECTVBA(ref_text As String)
INDIRECTVBA = Range(ref_text)
End Function
ref_text 引數將是對單元格的參考,其中 VLOOKUP 根據用戶在別處的選擇動態列出命名范圍。
我的第一個猜測是資料型別不匹配,但我沒有想法。
任何幫助表示贊賞!
謝謝,喬丹
uj5u.com熱心網友回復:
您回傳的是 Variant 值而不是 Range。
這會產生錯誤,因為CountIf它的第一個引數需要一個 Range 而不是 Variant 值。
如果您想回傳一個范圍,請添加As Range到您的函式宣告中并使用Set陳述句。
Public Function INDIRECTVBA(ref_text As String) As Range
Set INDIRECTVBA = Range(ref_text)
End Function
因為您省略了 Set 編譯器將其解釋為Let陳述句。沒有As Range在函式宣告中,它默認為As Variant. 因此,該函式正在檢索 Range 內的值,而不是回傳 Range 本身(Range 物件Range.Value在Let陳述句中默認提供其屬性)。
我在 CS 方面沒有受過太多教育,所以這個答案可能不準確。當人們糾正我時,我真的很感激能學到更多。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/374110.html
下一篇:在VBA中使用.Find作為范圍
