Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8901 / 13646 ツリー ←次へ | 前へ→

【30331】TextBoxでの数値の表示設定 green 05/10/25(火) 15:55 質問[未読]
【30344】Re:TextBoxでの数値の表示設定 Jaka 05/10/25(火) 17:03 回答[未読]
【30376】Re:TextBoxでの数値の表示設定 green 05/10/26(水) 10:53 質問[未読]
【30380】Re:TextBoxでの数値の表示設定 Jaka 05/10/26(水) 12:49 発言[未読]
【30382】Re:TextBoxでの数値の表示設定 green 05/10/26(水) 12:57 お礼[未読]
【30386】Re:TextBoxでの数値の表示設定 Jaka 05/10/26(水) 13:32 発言[未読]
【30437】Re:TextBoxでの数値の表示設定 green 05/10/27(木) 16:11 お礼[未読]
【30381】Re:TextBoxでの数値の表示設定 こたつねこ 05/10/26(水) 12:53 発言[未読]
【30383】Re:TextBoxでの数値の表示設定 green 05/10/26(水) 13:03 お礼[未読]
【30387】Re:TextBoxでの数値の表示設定 こたつねこ 05/10/26(水) 13:48 発言[未読]
【30388】Re:TextBoxでの数値の表示設定 わさび 05/10/26(水) 14:17 発言[未読]
【30391】Re:TextBoxでの数値の表示設定 green 05/10/26(水) 15:45 お礼[未読]
【30410】Re:TextBoxでの数値の表示設定 こたつねこ 05/10/26(水) 22:32 発言[未読]

【30331】TextBoxでの数値の表示設定
質問  green  - 05/10/25(火) 15:55 -

引用なし
パスワード
   またまた、宜しくお願い致します。

現在、
TextBox1=a   
としておりまて、そのaの変数の値は、12や34.56や−78等の
99.99〜−99.99までの数字が入ります。
そこでこのテキストボックスの表示を二桁の数字で尚且つ小数点を切り捨てにしたいのですが
どうすれば良いでしょうか?
一番の希望としては、Textboxのプロパティを変える式があれば助かるのですが・・・

と云うのも他の行で、
TextBox10=VAL(TextBox1.Text)+Val(TextBox2.Text)
と組んでいますので、誤差が出てしまうからです。

申し訳御座いませんが、宜しくお願い致します。

【30344】Re:TextBoxでの数値の表示設定
回答  Jaka  - 05/10/25(火) 17:03 -

引用なし
パスワード
   これでもいいのでしょうか?

MsgBox Application.RoundDown("5556.009", 1)

【30376】Re:TextBoxでの数値の表示設定
質問  green  - 05/10/26(水) 10:53 -

引用なし
パスワード
   お答えありがとうございます。

しかし、もう少し詳しく教えて頂けないでしょうか?
どの場所に
MsgBox Application.RoundDown("5556.009", 1)
この文章を入力すれば良いのでしょうか?

【30380】Re:TextBoxでの数値の表示設定
発言  Jaka  - 05/10/26(水) 12:49 -

引用なし
パスワード
   テキストに入力した時点で、単純にエクセル関数を使って、少数をとればいいと思ったんですが、小数部分は残して、表示だけセルの表示形式みたいにしよう、と言う事でしょうか?

これは無理です。
所詮テキストは、テキストでしかありません、セルのような事は出来ません。
どうしてもというのなら、他にラベルかテキストを作って、そちらに実際の数値を入れておくとか、表示形式を変えたセルに数字を移して、Range("A1").textで受け取るとか、かなり回りくどい事になると思います。
ラベルやテキストは、非表示にしておけば見えません。

【30381】Re:TextBoxでの数値の表示設定
発言  こたつねこ  - 05/10/26(水) 12:53 -

引用なし
パスワード
   green さん、Jakaさん
こんにちは

横レス失礼します。

greenさん、Jakaさんの回答を試してみました?
試してみましょうね^^;

>MsgBox Application.RoundDown("5556.009", 1)
上記を実行してみれば分かりますが少数点2桁以下が切り捨て
処理されていると思います。
これはエクセルのRoundDown関数を使用していますので、Help
で引数をお調べください。

>しかし、もう少し詳しく教えて頂けないでしょうか?
>どの場所に
>MsgBox Application.RoundDown("5556.009", 1)
>この文章を入力すれば良いのでしょうか?

TextBox1=aとしている所でそのまま渡すのではなく、

TestBox1.text=Application.RoundDown(〜

ってな感じで渡せばご希望の動作をするのではないでしょうか?

【30382】Re:TextBoxでの数値の表示設定
お礼  green  - 05/10/26(水) 12:57 -

引用なし
パスワード
   度重なるお答え本当にありがとうございます。

楽をする為にテキストボックスを変数扱いにしたのがミスでした。
無理とのお答えでしたので、改めてセルに保存するか
新たな変数を作成してそこに格納するか考えたいと思います。

本当にありがとうございました。

【30383】Re:TextBoxでの数値の表示設定
お礼  green  - 05/10/26(水) 13:03 -

引用なし
パスワード
   お答えありがとうございます。

Jakeさんの通りにすると、例えば
Textbox1=2.5
Textbox2=2.5
Textbox3=Textbox1+Textbox2
と組んだ場合、本当はTextbox3には、5と表示されるはずなのですが
Rounddwonを使用した場合、Textbox3は4と表示されてしまいます。

やはり楽せずにTextboxを変数扱いにせずに、
初めに格納する為の変数を作成しておくべきでした・・・

お答え、本当にありがとうございました。

【30386】Re:TextBoxでの数値の表示設定
発言  Jaka  - 05/10/26(水) 13:32 -

引用なし
パスワード
   回答ではなく、ただの思い付きです。
もしかしたらスプレッドシートなる物を使えば出来るのかも...。
かもというのは、私自身スプレッドシートを使った事が無いので良く知らないのです。

Office97 & Office2000パーソナルには、ついて無いんです。

【30387】Re:TextBoxでの数値の表示設定
発言  こたつねこ  - 05/10/26(水) 13:48 -

引用なし
パスワード
   ▼green さん:

>Jakeさんの通りにすると、例えば
>Textbox3=Textbox1+Textbox2
>と組んだ場合、本当はTextbox3には、5と表示されるはずなのですが
>Rounddwonを使用した場合、Textbox3は4と表示されてしまいます。

くどいようでごめんなさい
なんだかすごく??な感じなんですよ・・・^^;

少数点以下切捨てるんですよね?
という事は
>Textbox1=2.5
>Textbox2=2.5
ってありえないんじゃないですか?

TextBox1=2
TextBox2=2
になって
>Textbox3=Textbox1+Textbox2
TextBox3=4
で正解じゃないの?


それとも
2+2=5
って表示したいの???

2.5+2.5=5.0
って表示したいのならText1,2共に少数点1桁で取得して
単に合計すれば可能ですが・・・

【30388】Re:TextBoxでの数値の表示設定
発言  わさび  - 05/10/26(水) 14:17 -

引用なし
パスワード
   私みたいなVBA初心者が発言してよいのかわかりませんが、
RoundDwonをつい先日初めて扱って、今回の件に興味をもったので、
ちょっと自分でもやってみました。

こたつねこさんの疑問はもっともな話で、
greenさんがなさりたいこと、つまりテキストボックスがいくつあって、
(一番最初の投稿に「TextBox10」とあったので…)
どの段階で小数点以下切り捨てにしたいのかわからないのですが。
次のようなサンプルを作ってみましたが、参考になりますでしょか。
…というか、初心者の作ったコードなので、参考だけにしてください(-_-;

-----
テキストボックス1とテキストボックス2に値を入力、
テキストボックス3がフォーカスされたときに、
テキストボックス1とテキストボックス2の和の小数点以下切り捨てを表示
→テキストボックス1と2に値を入力した段階では切り捨てしてません。

-----------
Private Sub TextBox3_Enter()

  Dim Tbox1 As Long, Tbox2 As Long
  
  Tbox1 = TextBox1.Text
  Tbox2 = TextBox2.Text
  
  TextBox3.Text = Application.RoundDown(Tbox1 + Tbox2, 0)

End Sub
-----------
(注意)
テキストボックス1、テキストボックス2が空欄のまま、
テキストボックス3をフォーカスするとエラーになります。

【30391】Re:TextBoxでの数値の表示設定
お礼  green  - 05/10/26(水) 15:45 -

引用なし
パスワード
   皆様、ご返答ありがとうございます。

最初からお話すれば、Textboxに数字を表示させる時には、
内部で計算をさせてから小数点を切り捨て表示でOKでした。

最初のOKのプログラムの例
Textbox1=fix((計算後に2.5))・・・画面表示は2
Textbox2=fix((計算後に2.5))・・・画面表示は2
Textbox10=val(Textbox1.text)+val(Textbox2.text)・・・画面表示は4

ところが、仕様変更によりTextboxの表示は小数点切捨てで表示。
しかし、計算は小数点を含めた計算が必要になりました。
(Textbox10の表示は5にならないとダメ)

ちなみに、今回のTextboxには一切入力は無し(あくまでも数値表示のみ)で、
Comboboxの組み合わせによっての計算後にTextboxに各々数字が表示という
プログラムを組んでいました。

【30410】Re:TextBoxでの数値の表示設定
発言  こたつねこ  - 05/10/26(水) 22:32 -

引用なし
パスワード
   green さん、こんばんは

私の?のため貴重なお時間を・・・ごめんなさい

>最初のOKのプログラムの例
>Textbox1=fix((計算後に2.5))・・・画面表示は2
>Textbox2=fix((計算後に2.5))・・・画面表示は2
>Textbox10=val(Textbox1.text)+val(Textbox2.text)・・・画面表示は4
>ところが、仕様変更によりTextboxの表示は小数点切捨てで表示。
>しかし、計算は小数点を含めた計算が必要になりました。
>(Textbox10の表示は5にならないとダメ)

なるほど・・・納得いたしました。
私の勝手な思い込みが?の原因ですね。^^;

それなら、変数とかセルに値をではなく、現在のテキストボックスを非表示にして
新しく表示用のテキストボックスを配置したほうが変更が楽なのでは・・・
とまた勝手に思い込んでいますが、現状のコード次第ですね
修正頑張ってください。

【30437】Re:TextBoxでの数値の表示設定
お礼  green  - 05/10/27(木) 16:11 -

引用なし
パスワード
   すみません。お返事が反映されていなかったみたいです。

重ね重ねのお返事、ありがとうございます。
こちらも基本は97を使用していますので無理だと思います。

現在、配列変数を14種類用意して(中身は30列)全てに当てはめている状態です。
手間はかかりますが、今後のアップデートや仕様変更には対応しやすくなると
思っております。

今回の分を乗り越えても(表示の件)今後の事を考えるとやはり変数を使用した方が
良いのでしょうね。
決断をさせて頂く貴重なお返事、本当にありがとうございました。

8901 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free