2016-11-16 26 views
0

說我有以下功能:如何從VBA中的公式讀取參數?

函數MyFunction的(A作爲字符串,可選乙作爲整數)作爲字符串

調用單元格A1這樣的功能:

= MyFunction(「Hello」,「15」)

我想從另一個routi訪問此函數的參數NE通過在A1讀出該單元中的內容:

範圍(「A1」)式

然而此方法返回參數作爲字符串整個公式與式在單元格中輸入。有沒有辦法輕鬆提取參數(「你好」和15)?我試圖避免笨重的文本處理路線。

+0

你說的笨重的文本操作的意思,結果呢?這包括使用搜索和替換等功能嗎? – Hrothgar

+0

爲什麼你需要從另一個函數訪問參數?我猜測有一個更乾淨的方法來做到這一點 - 就像在MyFunction中緩存它們一樣。 – Comintern

回答

1

如果所有參數都是範圍,則可以使用Precedents屬性來獲取參數。

如果情況並非如此,恐怕文本操作就是你所得到的。如果你只是試圖解析一個特定的函數(而不是任何函數),那並不是那麼糟糕。

Function MyFunc(ar1, ar2) 

    MyFunc = 1 

End Function 

Public Sub ReadMyFunc(rng As Range) 

    Dim vaArgs As Variant 

    vaArgs = Split(Split(Left(rng.Formula, Len(rng.Formula) - 1), "MyFunc(")(1), ",") 

    Debug.Print "First arg is: " & vaArgs(0) & vbNewLine & "Second arg is: " & vaArgs(1) 

End Sub 

從即時窗口

?activecell.Formula 
=MyFunc(A1,"1") 
readmyfunc activecell 
First arg is: A1 
Second arg is: "1" 
+0

這個伎倆。謝謝。 – NamSandStorm