• ベストアンサー

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

テキストBOXに数式を入力すると、文字列と認識しますが、これを変数化して プログラムのソースにしたいのです。どのような方法があるでしょうか。 ぜひ、お教えください。よろしくお願い致します。

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

  • ベストアンサー
  • arata
  • ベストアンサー率49% (139/279)
回答No.4

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
質問者

お礼

いろいろとお世話になりました。無事にプログラムが動作しました。 本当にありがとうございました。

その他の回答 (3)

  • arata
  • ベストアンサー率49% (139/279)
回答No.3

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
質問者

お礼

たんへんありがとうございます。早速試してみます。

  • kanato
  • ベストアンサー率20% (1/5)
回答No.2

テキスト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
質問者

お礼

お忙しいのにありがとうございます。 明日実行してみます。

hori123
質問者

補足

お世話になります。 VB5.0を使っているのですが、「ControlSource」がないのです。 実行すると、この部分が色の反転でエラーになります。 どこがいけないのか教えてください。 よろしくお願い致します。

  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.1

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

hori123
質問者

お礼

ありがとうございました。早速OCXを探して見ます。

関連するQ&A

  • テキストBOXに入力した数式をプログラムソースとして使うには

    VB5.0でテキストBOXに数式(y=2*xのような式)を入力すると、文字列と認識しますが、これを変数化してプログラムのソースにしたいのです。どのような方法があるでしょうか。 ぜひ、お教えください。よろしくお願い致します。

  • VBA テキストボックス内の文字列を切り出したい

    フォームのテキストボックスに入力した文字列の一文字目だけを 切り出し、変数に格納したいのですが、 切り出す作業がどうしてもできません。 よろしくお願い致します。

  • VBA テキストボックスの改行

    現在、テキストボックスに入力された文字列を セルに入力するプログラムを作っています。 その際、テキストボックス内で あいうえお[改行] かきすけこ と入力された場合、 セル[A1]あいうえお セル[A2]かきすけこ としたいのですが何か方法はありますか? 回答よろしくお願い致します。

  • ExcelVBAでテキストボックスに入力制限をする方法

    Excelのプログラムで、フォームのテキストボックスに数値のみ入力許可したり、文字のみ入力許可したり、特定の文字のみ入力許可にするなど、入力制限を行う方法はどのようにすればよいでしょうか? 回答よろしくお願いします。

  • テキストボックスに「00000」を入力すると「0」になってしまう

    あるテキストボックスには5桁の半角数字を入力させるようにしたいと思っています。 このテキストボックスには以下の入力チェックをかけていますが、「00000」を入力すると「0」と判断されてしまい。一つ目のチェックに引っかかってしまいます。 これを文字列として判断する方法はありますか? または、以下のチェックに引っかからない方法はありますか? よろしくお願いいたします。 (codeにはvalueが入っています。) if(code == 0){ alert("入力してください。"); return false; } if(isFinite(code) == false){ alert("半角数字を入力してください。"); return false; } if(code.length != 5){ alert("5桁入力してください。"); return false; }

  • テキストボックスに入力された内容を他のテキストボックスにコピーしたい

    テキストボックスA、Bがあるとして、テキストボックスAに何らかの文字列を入力します。 その状態でボタンを押すと、テキストボックスAの内容をテキストボックスBにコピーするようにしたいのですが、このようなことはjavascriptで可能でしょうか?

  • EXCEL2010のテキストボックスについて

    テキストボックスに文字数制限はありますか? セルA1に文字列とセル値を&でつないだ文章を=の計算式で入力しています。 それをテキストボックスに=で取り込んでいるのですが、途中で文章が切れてしまいます。 文字数制限があるのでしょうか? この制限を解除する方法はないでしょうか? windows7 の excel2010です。 ご回答宜しくお願い致します。

  • テキストボックスに入力された値を取得する方法

    よろしくお願いします。 フォームにテキストボックスを配置し、ユーザーに文字を入力してもらいます。 OKボタンを押すと、その文字を取得できるようにしたいです。 VBだと・・・ Textbox1.value = a (aは変数) みたいな感じで変数に代入するだけでよかったと思うんですが・・・ どのように書いたら良いでしょうか?

    • ベストアンサー
    • Java
  • 複数のテキストボックスに同時入力したい!

    WIN8 access2003 毎回お世話になります。 今回は自動車用記録簿の入力フォームを作成しております。 メインフォームにサブフォームを儲け、そのサブフォームに80個のテキストボックス (txt1~txt80)があります。 入力の際にtxt1,txt5,txt8に”レ”txt2,txt20,txt21は”×”の様に複数のテキストボックス に同じ文字列を代入しようと下記の方法を考えています。 (1)テキストボックスをクリックして背景色を変える (2)”×”入力用コマンドボタンを押して背景色の変わったテキストボックスに”×”を代入 (3)代入したら全てのtxtboxの背景色を戻す の様な方法が良いかなと考えていますが、やり方が分からず困っています。 他の良い方法もありましたら宜しくお願い致します。

  • テキストボックスとセレクトボックスの選択肢の連携

    この度はお世話になります。 1個のテキストボックスに入力された文字列により、その後の1個の セレクトメニューの選択肢を変更することってできるのでしょうか? 具体的には以下のような動作です。 ・デフォルトではテキストボックスに文字列が入力された場合は、  その後のセレクトボックスには「トマト、きゅうり、ほうれんそう」  の選択肢が入る。 ・テキストボックスに「あいうえお」と入力された時のみ、その後の  セレクトボックスが「りんご、みかん、ぶどう」の選択肢に変わる。 ・テキストボックスに「かきくけこ」と入力された時のみ、その後の  セレクトボックスに「あじ、さば、かつお」の選択肢に変わる。 こんな感じですが、よろしくお願い致します。 当方、只今javascriptを勉強しており、条件式に苦戦しております。 サンプルプログラムを見せていただけるとありがたく思います。

専門家に質問してみよう