-PR-
解決
済み

テキストBOXに入力した数式をプログラムソースとして使用する方法

  • すぐに回答を!
  • 質問No.84199
  • 閲覧数422
  • ありがとう数5
  • 気になる数1
  • 回答数4
  • コメント数0

お礼率 80% (4/5)

テキストBOXに数式を入力すると、文字列と認識しますが、これを変数化して
プログラムのソースにしたいのです。どのような方法があるでしょうか。
ぜひ、お教えください。よろしくお願い致します。
通報する
  • 回答数4
  • 気になる1
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.4
レベル11

ベストアンサー率 49% (139/279)

QNo.85326で同じ質問をされたのですね。
http://www.okweb.ne.jp/kotaeru.php3?q=85326

こちらで、補足されたほうがいいと思うのですが。
85326の質問を見ると変数を使用したいのですね。そうすると、ExecuteStatementを使用する必要があります。先ほどの回答のように、Script Controlで、VBScriptを指定して、下記のように使用します。

Private Sub Command1_Click()
Dim Result
ScriptControl1.ExecuteStatement (" x = 10 ")
ScriptControl1.ExecuteStatement (Text1.Text)
Result = ScriptControl1.Eval(" y ")
Text2.Text = Result
End Sub

テキストボックスText1に、y = x * 2 が入力された場合

x = 10
y = x * 2

が実行されたのと同じになり、
Eval("y")で、変数yの値が取り出されます。
お礼コメント
hori123

お礼率 80% (4/5)

いろいろとお世話になりました。無事にプログラムが動作しました。
本当にありがとうございました。
投稿日時 - 2001-06-06 21:43:57
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル13

ベストアンサー率 33% (427/1283)

 その入力される文字は、”12+12"の様な式なのでしょうか? それとも、"A+B+C"の様な変数を含んだ式なのでしょうか?  まぁどの道、前者でも後者でも、入力された文字列を、解析して計算するしかなく、すごく厄介です。  文字列を、数字部分と計算記号部分に分解して、それを演算子の優先順位で計算してあげるればOKです。  確か、そういった市販のOCXがあった ...続きを読む
 その入力される文字は、”12+12"の様な式なのでしょうか? それとも、"A+B+C"の様な変数を含んだ式なのでしょうか?

 まぁどの道、前者でも後者でも、入力された文字列を、解析して計算するしかなく、すごく厄介です。

 文字列を、数字部分と計算記号部分に分解して、それを演算子の優先順位で計算してあげるればOKです。

 確か、そういった市販のOCXがあったの思うので、自身が内とか急いでいるって事なら、そのOCXの購入を考えてみるのも良いと思います
お礼コメント
hori123

お礼率 80% (4/5)

ありがとうございました。早速OCXを探して見ます。
投稿日時 - 2001-06-01 16:26:06


  • 回答No.2
レベル5

ベストアンサー率 20% (1/5)

テキストBOXに入力された式の結果を求めて その値を変数として持ちたいのでしょうか? ちょっと変な方法ですが参考になるでしょうか? ○テキストボックスを2つ用意しておいて(txt1、txt2)、  ボタンがクリックされるとtxt1に入力された数式をtxt2  のコントロールソースに入れます。  するとtxt2にはtxt1の数式の結果が入ります。  その後にtxt2を変数(atai)に格納 ...続きを読む
テキストBOXに入力された式の結果を求めて
その値を変数として持ちたいのでしょうか?
ちょっと変な方法ですが参考になるでしょうか?

○テキストボックスを2つ用意しておいて(txt1、txt2)、
 ボタンがクリックされるとtxt1に入力された数式をtxt2
 のコントロールソースに入れます。
 するとtxt2にはtxt1の数式の結果が入ります。
 その後にtxt2を変数(atai)に格納する・・・。
 ataiにはtxt1の数式の結果がセットされるという
 感じです。

Private Sub ボタン_Click()
  Dim atai As Integer

  txt2.ControlSource = "=" & txt1

  atai = txt2
End Sub

これしか浮かびませんでした。
見当違いだったらすみません。
補足コメント
hori123

お礼率 80% (4/5)

お世話になります。
VB5.0を使っているのですが、「ControlSource」がないのです。
実行すると、この部分が色の反転でエラーになります。
どこがいけないのか教えてください。
よろしくお願い致します。
投稿日時 - 2001-06-02 16:42:24
お礼コメント
hori123

お礼率 80% (4/5)

お忙しいのにありがとうございます。
明日実行してみます。
投稿日時 - 2001-06-01 22:37:08
  • 回答No.3
レベル11

ベストアンサー率 49% (139/279)

2つほど思い付いたのですが、 1.Oracleを利用する RDBのOracleが使用できるのであれば、Oracleに計算させる Select テキストボックスに入力された計算式 From Dual の形式のSELECT文をoracleに投げて計算結果を得ます。 2.ScriptControlを利用する。 VBScriptやJScriptには、計算式を評価して結果を返す関数があり ...続きを読む
2つほど思い付いたのですが、

1.Oracleを利用する
RDBのOracleが使用できるのであれば、Oracleに計算させる

Select テキストボックスに入力された計算式 From Dual

の形式のSELECT文をoracleに投げて計算結果を得ます。

2.ScriptControlを利用する。
VBScriptやJScriptには、計算式を評価して結果を返す関数がありますので、これを
利用しようと言うものです。
VBScriptやJScriptを利用するには、WSHが利用できないといけません。下記のプロ
グラムをVersion.vbsと言うテキストファイルで保存して、エクスプローラーでダブ
ルクリックしてください。

WScript.Echo "WSHのバージョンは" & WScript.version

メッセージボックスが出て、バージョンが表示できればOKです。ただし、動作しなかっ
た場合やバージョンが5.0未満の場合は、WSHをダウンロードしてインストールする必要
があります。(5.0未満ではEval関数がない)

WSHは下記から取得できます。

http://www.microsoft.com/msdownload/vbscript/scripting51.asp?id=25

次に、ScriptControlをダウンロードします。

http://www.microsoft.com/Japan/Developer/Scripting/default.htm?/japan/developer/scripting/scriptcontrol/scdown.htm

登録が必要ですが、無料です。

これで、やっとVBから使用できます。

VBのメニュー[プロジェクト]-[コンポーネントの追加]で、Microsoft Script Control
を追加します。
フォームにはりつけて使用する場合は、

Private Sub Command1_Click()
Text2.Text = ScriptControl1.Eval(Text1.Text)
End Sub

のようにすれば、OKです。言語をJScriptで実行したい場合は、ScriptControlの
プロパティをJScriptにしてください。
フォームにはりつけずに使用する場合は下記のようになります。

Private Sub Command1_Click()
Dim SC As Object
Set SC = CreateObject("ScriptControl")
SC.Language = "VBScript"
Text2.Text = SC.Eval(Text1.Text)
End Sub

WSHやScriptContorolの情報は下記を参照してください。

http://www.microsoft.com/Japan/Developer/Scripting/

なお、VBScriptやJScriptのかわりに最近話題の言語Rubyでも、実行することが出来
ます。

http://www.geocities.co.jp/SiliconValley-PaloAlto/9251/ruby/

上記のURLからActiveScriptRubyを取得して、インストールし、上記のプログラムの
LanguageをRubyScriptとするとRubyにより実行されます。

また、Eval関数の例が下記のページに載っておりますので紹介しておきます。

http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9910/wsh/
お礼コメント
hori123

お礼率 80% (4/5)

たんへんありがとうございます。早速試してみます。
投稿日時 - 2001-06-05 13:28:42
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ