2016-06-20 94 views
1

這是我的問題:我想創建一個函數,它將X放入函數的方程中。Excel-VBA:創建接受數學等式的函數

我認爲劇本永遠是這樣的:

Function Myfunction(x As Integer) 
    Myfunction = <EQUATION like 2*x> 
End Function 

我需要做的就是把公式單元格爲文本和MyFunction的將採取它。所以,這個方程總是在變化。

+1

'Myfunction = ActiveSheet.Evaluate(「2 *」&x)' –

+1

Psst @ScottCraner - 'Evaluate' not'Evalutate';) – Rory

+1

@Rory是啊是啊。你對一個愚蠢的建築工人有什麼期望? Weez不能吃spellz麥芽汁。我編輯了原始評論。謝謝。 –

回答

2

退房的Evaluate功能 - 看到這樣的代碼示例:

Option Explicit 

Sub Test() 
    Debug.Print EvalForX("(2+X)*44", 14) 
    Debug.Print EvalForX("X^3", 22) 
    Debug.Print EvalForX("(X+10)*(X-3)", 7) 
    Debug.Print EvalForX("X", 12) 
End Sub 

Function EvalForX(ByVal strEquation As String, ByVal intX As Integer) As Double 
    EvalForX = Evaluate(Replace(strEquation, "X", CStr(intX), 1, -1, vbTextCompare)) 
End Function 

這將輸出:

704 
10648 
68 
12 

,可以在工作表被用作一個用戶定義函數:

enter image description here

+0

Yeees,this是解決方案///謝謝羅賓先生的幫助///並感謝你們所有人///它真的很好 – Mchich

+0

@Mchich隨時接受答案,如果你覺得它幫助你了 –

+0

這真的很友善羅賓先生///和是這就是我正在尋找///謝謝//我正在學習 – Mchich

0

這是最終的解決方案

EvalForX =評估(更換(更換(strEquation, 「X」,CStr的(INTX),1,-1,vbTextCompare), 「 」「。」,1,-1,vbTextCompare))