2016-06-20 11 views
1

を受け入れる関数を作成しますこれは私の問題です:私はXを取り、私の機能で式にそれを置く関数を作成します。エクセルVBA:数式

私はスクリプトは常にこのようになると思う:

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

は、私は何をする必要があることはテキストとしてセルに数式を入れているとMyFunctionのは、それを取るでしょう。したがって、方程式は常に変化しています。

+1

'のMyFunction = ActiveSheet.Evaluate( "2 *" &X)' –

+1

PSST @ScottCraner - 'Evaluate'ない' 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

本当にあなたのものですMr. Robin ///そしてこれは私が探していたものです///ありがとう//私は – Mchich

0

これは最終的な解決策である

EvalForX =評価((交換交換(strEquation、 "X"、CStr関数(INTX)、1、-1、vbTextCompare)、 " ""。"、1、-1、vbTextCompare))