アプリ版:「スタンプのみでお礼する」機能のリリースについて

『VB初心者。小数点以下の表示でつまづいています(涙』 (・・・過去質問 解決済み)
では大変お世話になりました。

さて、上記質問は解決したかに思い、お礼もしてして終了したのですが、
検証しておりましたら問題が見つかりました。

以下、質問内容を修正して、再質問します。よろしくお願いしますm(__)m

VB .NET環境
Microsoft Visual Studio / ActiveReportで帳票を作成しています。
DBからの値が、小数点以下ありの場合(例:1.07)の時はそのまま表示し、小数点以下が.00の場合(例:1.00)の時、整数部分のみを表示させたいのです。
質問の『値』ですが、今回の値は小数点第2位までです。

#.00 の時 → # と表示。
#.01~99 の時 → そのまま表示。
としたいのです。

ちなみに、小数点から左(整数部分)の桁は9桁まで入る可能性があります。

前回解決した際は、小数点より右1桁、左1桁で質問してしまったので、

 H_数量.Text = Format(Val(H_数量.Text), "0.0")
 If Right(H_数量.Text, 2) = ".0" Then
 H_数量.Text = Format(Val(H_数量.Text), "0")
 End If

と回答いただき、このパターンではうまく動きました。

小数点以下2桁のパターンも、コードを変更し、

 H_数量.Text = Format(Val(H_数量.Text), "0.00")
 If Right(H_数量.Text, 2) = ".00" Then
 H_数量.Text = Format(Val(H_数量.Text), "0")
 End If

でOKでした。

しかし、小数点より左9桁、右2桁を試してみると、ダメなのです。

1行目、
 H_数量.Text = Format(Val(H_数量.Text), "0.00")
を、
 H_数量.Text = Format(Val(H_数量.Text), "#,##0.00")
と変更しても、
小数点左が9桁には対応できません。
"###,###,##0" とか、"000,000,000" とか色々試しましたが、
500.00 の時、 000,000,500 と表示されました。

どのようにコードを書いたら良いでしょうか?
アドバイスお願いしますm(__)m

A 回答 (5件)

はい、こんにちわ。


質問の意味が少しわかりづらいですが、
ようは、整数9桁、少数2桁で、ちゃんときれいに表示されればいいって事ですよね?たぶん・・・

Me.TextBox1.Text = Format(CDbl(TextBox1.Text), "###,###,##0.##")

以上です。
    • good
    • 0
この回答へのお礼

お礼が遅くなりました。

結果をご報告しますと、一番やっかいなヤツでは実現できませんでした。
他の部分のコードまで理解していないと実現できないのかもしれません。
私は知識不十分な上に、編集のために部分的にソースをいじっているだけなので、
全体を把握できていませんので。
ここの部分はもう少し格闘します(><)

しかしそれ以外の簡単な帳票ソースでは実現できました!
シンプルなコードでキレイに収まり、イイ感じです☆
やっかいなヤツ以外、解決です!!

本当にありがとうございました。
またお世話になるかもしれませんが、どうぞよろしくお願い致しますm(__)m

お礼日時:2011/12/14 16:02

>小数点左が9桁には対応できません。


具体的にどうなりますか?

H_数量.Textに最大文字数の制限とかしていませんか?
あるいはActiveReportの定義上で文字数の制限があるとか、
帳票出力する項目の定義上文字が出力範囲外になってしまって、見えていないだけとか。
画面ならmaxlengthというプロパティを確認するのですが、
ActiveReportは持っていないのでどういうプロパティかわかりませんが。

?val("123456789012.34")が
123456789012.34
?format(val("123456789012.34"),"0.00")が
"123456789012.34"
と表示するので、桁落ち問題ではなさそうですが。

ちなみに、
?Format(cdbl("123.40"),"###,###,##0.##")
"123.4"
で、よい。
"123.40"
と出さない。ということなら、ANo.3の方の回答の方がシンプルでいいと思いますけど。
VBAと違って、VB.net(2005で試してますけど)は
?Format(cdbl("123.0"),"###,###,##0.##")

"123."
とならずに
"123"
となるようですから。

この回答への補足

すみません、補足に失礼します。
質問者のszsznowです。

別件に手を焼いていたため、ご回答、まだ試していません。
まずはご報告と思いましてレスしました。
確認しましたらまたご報告いたします。

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

補足日時:2011/12/13 10:06
    • good
    • 0
この回答へのお礼

お礼が遅くなりました。

結果をご報告しますと、一番やっかいなヤツでは実現できませんでした。
しかしそれ以外の簡単な帳票ソースでは実現できました!

アドバイスどうもありがとうございました。
またお世話になるかもしれませんが、どうぞよろしくお願い致しますm(__)m

お礼日時:2011/12/14 16:04

あと、補足というより、アドバイスです。


このぐらいの事で、IF判定による分岐処理とかやめたほうがいいです。
文字列操作・Format関数 あたりでぐぐれば、沢山関連情報がでてきますので
そちらを一読されることを強くお勧めします。
今回、分かりやすいだろうと思い、Formatを使いましたが、
.NETには文字列操作のやり方が複数存在しています。

http://park5.wakwak.com/~weblab/refStringClass.h …
http://park5.wakwak.com/~weblab/refFormat.html
http://dobon.net/vb/dotnet/string/index.html
http://dobon.net/vb/dotnet/string/inttostring.html
http://adonetvb.com/Learning/StandardFormat.html
    • good
    • 0
この回答へのお礼

お礼が遅れて申し訳ございません。
アドバイスのサイト、ぐぐってHITしたことがあります。
やはりちゃんと勉強していないのがいけないんですよね・・
これを機会に基本を学習したいと思います。

ともあれ、アドバイス、参考になりました。
実は他の部分が関係してまだ完全なる解決とはいっていませんが。

まずはお礼をと思いレスいたしました。

失礼します。

お礼日時:2011/12/13 10:03

H_数量.Text = Format(Val(H_数量.Text), "#,##0.00")


If Right(H_数量.Text, 3) = ".00" Then
H_数量.Text = Format(Val(H_数量.Text), "#,##0")
End If
では?
    • good
    • 0
この回答へのお礼

すみません、これもダメでした。

If Right(H_数量.Text, 3)  ← 質問文で 2 と表記してしまってすみません。
慌てて質問したので。

おそらくコードの他の部分で何か制御しているのですかね?

なにぶん初心者で、全体的に理解できておらず、皆様への質問も中途半端でご迷惑おかけしております・・

皆様の回答をヒントに、私の方でも色々試しますので、引き続きよろしくお願い致します。m(__)m

お礼日時:2011/12/08 09:48

int(Val(H_数量.Text))=Val(H_数量.Text) then


H_数量.Text=int(Val(H_数量.Text))
end if

みたいな事でどうでしょう

この回答への補足

質問者szsznowです。
補足欄使わせてもらってすみません。

できたかも、、、しれません!!

また先走ってお礼をして解決扱いにするとあとでまたご迷惑をおかけしますので、
またご報告させていただきます。

とりあえず、、ありがとうございました。

補足日時:2011/12/08 09:52
    • good
    • 0
この回答へのお礼

お礼が遅くなりました。

結果をご報告しますと、一番やっかいなヤツでは実現できませんでした。

今回は kazneさんの 
Me.TextBox1.Text = Format(CDbl(TextBox1.Text.Text), "###,###,##0.##") 
を使わせていただきました。

しかしShowMeHowさんのご回答は別の時に使わせていただくと思います。
私の参考コードリストに入れさせていただきました。

ありがとうございました。
gooではまたお世話になると思いますので、今後ともどうぞよろしくお願い致しますm(__)m

お礼日時:2011/12/14 16:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A