- ベストアンサー
エクセルVBAについて質問です。
エクセルVBAについて質問です。 TextBox1に例えば「2」と数字を入力すると、Cells(1,1)に「1/2」と分数表示させ、且つその分数を数値として扱いたいのですが、何か良い方法はありませんか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 あまりおすすめしません。 これでどうでしょうか? Sub test2() Cells(1, 1).Value = "1/" & UserForm1.TextBox1.Value Cells(2, 1).Value = 1 / CDbl(Replace(Cells(1, 1).Value, "1/", "")) End Sub
その他の回答 (2)
- tom11
- ベストアンサー率53% (134/251)
基本的に、コンピューターの世界は、 二進法です。 それを、分数に変えたり、、10進数に変えたり しているだけです。 Private Sub CommandButton1_Click() Cells(1, 1).Value = 1 / UserForm1.TextBox1.Value Cells(1, 1).NumberFormatLocal = "# ??/??" UserForm1.TextBox1.Text = Cells(1, 1).Text Cells(2, 1).Value = Cells(1, 1).Value * 20 Cells(2, 1).NumberFormatLocal = "# ??/??" End Sub 前の人の応用ですが。 テキストボックスに単に分数を表記したければ 上記の方法で、テキスト変換すればよし、 その数字を使いたければ、セルの数字を使ったら 良いような気がします。
お礼
回答ありがとうございます。 >基本的に、コンピューターの世界は、二進法です。それを、分数に変えたり、、10進数に変えたりしているだけです。 お恥ずかしい話ですが、自分はパソコンに疎いくせにVBAを独学で勉強しています。(といってもここの方々の手助けが9割強、自分の力が1割弱ですが…)ですからこのような基本的なことを教えて頂くと、とても勉強になります。また何かありましたらよろしくお願いします。
- ka_na_de
- ベストアンサー率56% (162/286)
こんばんは。 こういうことですか? シート上のテキストボックスと ユーザーフォーム上のテキストボックスの 2パターン作ってみました。 Sub test() Cells(1, 1).Value = 1 / ActiveSheet.OLEObjects("TextBox1").Object.Value Cells(1, 1).NumberFormatLocal = "# ??/??" End Sub '================================================ Sub test2() Cells(1, 1).Value = 1 / UserForm1.TextBox1.Value Cells(1, 1).NumberFormatLocal = "# ??/??" End Sub
補足
説明不足のため、2種類作成させてもらう形になり、すみませんでしたm(__)m 自分が必要としていたのはユーザーフォーム上のテキストボックスです。 確かに回答してもらったもので問題は解決しましたが、分母が小数のときはどのようにすればいいのでしょうか? 実は分子は「1」で固定、分母は○○、○○○、○○.○、○○○.○(○=1~9)のいずれかの形に限定されるのですが…。 重ねての質問、申し訳ありませんm(__)m
お礼
お世話になります。度々申し訳ありませんm(__)m あれから試行錯誤し、結局セルを二つに分け、左のセルに「1/」を、右のセルに「TextBox1.Value」を入れるという方法でことを進めてみました。 回答を締め切ろうとした本日、普通であればもう忘れているであろう質問に対して丁寧に回答して下さったことにどのようなお礼の言葉を述べていいものか分からないくらい感謝しています。しかも提示のコードで注文どおりのことが可能でした。 本当にありがとうございましたm(__)m