[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『TextBoxで数式を入れることは可能?』(初心者)
TextBoxの入力内容を数式として変数に設定できますか。
少し急ぎで、
くだらない質問ですみませんが、
宜しくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows8 >
(マナ) 2018/06/12(火) 22:12
できないと思います。
(マナ) 2018/06/12(火) 23:36
Private Sub TextBox1_Change() Range("A1").Value = Val(TextBox1.Value) * 3 End Sub
(マナ) 2018/06/12(火) 23:44
所詮、「数式」とは、「文字の羅列」にすぎません。
そしてテキストボックスに入力できるのも「文字のみ」です。
なので、とくにそこで計算されるわけではありませんよね?
入力された文字列を読んだ人が、「あ、これは数式だ。」と認識出来たときに、
計算がされます。
(エクセルではセルに文字列入力したときに、「数式」と認識できる
文字列をセルに入力したときに計算されます。「数式」という別物が、
存在するわけではありません。入力された文字列をエクセルが忖度して
数式だと認識したときに、計算して計算結果を返すようになってます。)
それから、VBA上では「数式」というものを扱うようにはできてません。
変数には基本、値をいれます。
変数に入れたいのは、数式として読める文字列ですか?
それとも計算した結果の値ですか?
いずれにしても、気にせずに特に何も考えずに進めてみてください。
で、計算したくなったら「この文字列を数式として読んで、計算してください。」と
命令をすればいいわけです。
それから、すでにテキストボックスが変数のような「値の仮置場」になっているので、
改めて余分な変数を用意しなくてもいいでしょう。
例)
ユーザーフォーム上に
TextBox1
Label1
CommandButton1
をそれぞれ配置しコードは、
Private Sub CommandButton1_Click()
Dim s As String s = "NG"
On Error GoTo ErrH Me.Label1.Caption = Evaluate(Me.TextBox1.Text) Exit Sub
ErrH:
Me.Label1.Caption = s End Sub
と書いてF5キーで起動
テキストボックスにいろいろ文字を入れて(3+3とか3*3とか)、
コマンドボタンを押してみてください。
P.S.
あぁ、計算したくなったらその文字列をセルに入れてみるのもありです。
エクセル君が忖度して計算してくれるでしょう。
(まっつわん) 2018/06/13(水) 08:27
まっつわん さんへ
>所詮、「数式」とは、「文字の羅列」にすぎません。
簡単な事と言う雰囲気の表現ですが、実際はエラく分かりにくい理屈ですね。
「文字の羅列」と「文字列の羅列」は同じ意味で使っていますか?
使っているとすると、 「羅列だろうが、整列だろうが」、それは文字としてしか認識されないと思います。(計算はしてくれない)
使っていないとすると 「数式用の文字」は数式なのであって、「所詮〇〇に過ぎない」と言う表現はピンとこないです。
(半平太) 2018/06/13(水) 15:24
自分の言葉で、端的にイメージを説明したつもりです。
違う、あるいは分かり難いなら、
別途、訂正なり補足説明等をお願いします。
m(_ _)m
(まっつわん) 2018/06/13(水) 16:43
>違う、あるいは分かり難いなら、 >別途、訂正なり補足説明等をお願いします。
・・と言われましても、この疑問にお答えいただかないと焦点が絞れません。 ↓ > 「文字の羅列」と「文字列の羅列」は同じ意味で使っていますか?
まぁ、どっちだとしても、基本的な考え方は既に書いていますので、 それを膨らませるぐらいしか出来ないですけども・・
(半平太) 2018/06/13(水) 17:00
コントロールの方のテキストボックスを1つ作り テキストボックス右クリック、プロパティの LinkedCell に Sheet1!$B$1 とする。(作業セル)
数式→名前定義 (注)名前定義する時の選択セルで結果が変わるかも?? 名前に「計算」 参照範囲 =evaluate(Sheet1!$B$1)
A1に =計算
テキストボックスに計算式 =1+1 とか。 大体こんな感じだったような・・・。
これの応用 https://www.excel.studio-kazu.jp/kw/20100531103849.html
(BJ) 2018/06/13(水) 22:56
>TextBoxの入力内容を数式として変数に設定できますか。
という問いに答えていただけたらよいのではないのでしょうか。
質問者をおいてけぼりにした議論は望まないのは半平太さんも同じでしょう。
こちらとしては、
よりよい回答が出てきたなら、表現の方法等を反省し、こちらも勉強させていただいたうえで、
次回の回答に生かしていきたいと思いますので、よろしくお願いします。
分かり難いという指摘がありましたので、
説明を補足します。
> 「文字の羅列」と「文字列の羅列」は同じ意味で使っていますか? 単に文字が並んでいるという意味で、「文字の羅列」と言っています。 「文字列の羅列」は数式と読めるかどうかは別として、 意味のある単語(記号的な文字列や略称等も含む)が 並んでいるという意味とこちらは解釈します。 (まっつわん) 2018/06/14(木) 11:30
>具体例をあげて、説明できませんか >(マナ) 2018/06/12(火) 22:12
>ユーザーフォーム上のテキストボックスの話ですよね? >真意が図りかねますが、、、、 >(まっつわん) 2018/06/13(水) 08:27
質問者さんには、回答者の上の疑問に答えて欲しいものです。
それがなければ的確な答えは作れないです。
>所詮、「数式」とは、「文字の羅列」にすぎません。 >そしてテキストボックスに入力できるのも「文字のみ」です。
それにしてもこんなキャッチフレーズは納得できかねます。
エクセルにおいて、文字列データと数式は厳然たる違いがある。 それを初っ端で大差ない様なニュアンスの発言をするのは如何なものか。
文字列に過ぎない数式(に見えるデータ)は、数式ではない。
EVALUATE[関数があるので、数式として評価する手段はある。 でもそれは必然ではない。 予備知識として、その関数が存在することを知っていたから言えた論旨であると思う。
もしEVALUATE[関数が存在しなくても、同じことを書いたですか? 書いたのなら立派です。 無ければ、数式解析プログラムを自作する覚悟なんですね? それなら論旨は首尾一貫しています。
普通は「文字列と数式を混同しちゃいけません」とアドバイスすると思うんですけどねぇ・・
>こちらは、質問者ではないので、ここで討議あるいは議論するつもりはありません。
お好きにどうぞ。私としては、野放しにしておけない心境だったので。でももう十分です。
(半平太) 2018/06/14(木) 17:26
でもって、質問は
"A1+A2"を変数に保持しておいて
その計算結果をテキストボックスに書きたい
てな話かと。
こればっかりは質問者がハッキリさせないといけない。
(γ) 2018/06/14(木) 20:19
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.