• ベストアンサー

文字列で読み込んだ計算式で値を計算

VBAで数値と式を文字列で受け取り、式に従って値を返す関数を作成したいと考えています。 ex KEISANという関数に対し、値と計算式を与え結果を求める A=50 B=80 C=10 SIKI="B+A-C" KEKKA = KEISAN(A,B,C,SIKI) KEKKAには、式に従い120が返る このA~C及びSIKI(式)は外部ファイルから読み込みます。式には加算か減算しかありません。 どなたか、良いアイデアありましたら、教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

Public Function KEISAN(A, B, C, SIKI As String) SIKI = Replace(SIKI, "A", CStr(A)) SIKI = Replace(SIKI, "B", CStr(B)) SIKI = Replace(SIKI, "C", CStr(C)) KEISAN = Evaluate(SIKI) End Function Public Sub test() Dim A, B, C, SIKI As String, KEKKA A = 50 B = 80 C = 10 SIKI = "B+A-C" KEKKA = KEISAN(A, B, C, SIKI) MsgBox KEKKA End Sub

y_hoshi
質問者

お礼

サンプルコーディングありがとうございました。 活用させて頂きます。 ありがとうございました。

その他の回答 (1)

回答No.2

おそらく、変数名のA、B,C等も外部から与えられるのでしょう。 考え方だけ。 1.変数名と値を入れる配列hensuu(1,99)を用意します。 2.外部ファイルから1行読み込む。 3.文字列が"SIKI="で始まっているなら6に進む。 4.読み込んだ文字列をSplit関数を使って変数名と値に分離してhensuu(,)に格納する。 5.2に戻る。 6.Split関数を使って計算式の文字列を取り出す。 7.計算式に対して、hensuu(,)に格納されている変数名を値に置換する。(#1の解答を参考にしてReplace関数を使う) 8.格納した変数名の数だけ7を繰り返す。 9.#1の解答に様にEvaluate関数で計算させる。 10.終わり

y_hoshi
質問者

お礼

ご想像の通り、変数は外部から与えられます。 アドバイスを参考に、チャレンジしてみます。 ありがとうございました。