VB初心者が四苦八苦!小数点以下の表示でつまづいています(涙

このQ&Aのポイント
  • VB初心者がMicrosoft Visual Studio / ActiveReportで帳票を作成しています。DBからの値が小数点以下ありの場合はそのまま表示し、小数点以下が0の場合は整数部分のみを表示したいという問題について解決策を教えてください。
  • 質問の値は小数点第一位までで、#.0の場合は#と表示し、#.1~9の場合はそのまま表示したいです。稼働環境はWinXP、Win7です。イメージとしては『H_数量』という値部分です。
  • 既に別の条件として、H_数量が0.00の場合にH_数量とH_単価をクリアするコードを書いていますが、このH_数量が問題の値部分です。H_数量の値が小数点以下ありの場合または0の場合で条件分岐したいです。
回答を見る
  • ベストアンサー

VB初心者。小数点以下の表示でつまづいています(涙

上記内容で四苦八苦しているVB初心者です。 Microsoft Visual Studio / ActiveReportで帳票を作成しています。 DBからの値が、小数点以下ありの場合(例:1.7)の時はそのまま表示し、小数点以下が0の場合(例:1.0)の時、整数部分のみを表示させたいのです。 質問の『値』ですが、今回の値は小数点第一位までです。 #.0 の時 → # と表示。 #.1~9 の時 → そのまま表示。 としたいのです。 稼働環境はWinXP、Win7です。 ちなみにイメージしていただくために・・・ 既に別の条件で、 『If H_数量.Text = "0.00" Then H_数量.Text = "" H_単価.Text = "" End If 』 というコードを書いているのですが、この、『H_数量』が問題の値部分です。 H_数量 の値が小数点以下ありの時、0の時、 での条件式となります。 よろしくお願いします。

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

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.5

>H_数量.Text = Format(H_数量.Text, "#,##0") >は、全行 #,##0 と表示されてしまいました。 こちらは、.NETじゃないので確認はできませんが、 H_数量.Text = Format(Val(H_数量.Text), "#,##0") のようにValを付けてみてください。 Val関数は、文字列を数値に変換する関数です。 Format関数は、本来は数値を文字列に変換する関数です。 VBは数値が入っている文字列も数値と解釈されることがあるため、Valを使わなくても大丈夫でしたが、 .NETではそれがダメなようです。 ただ、他の言語にしてみればそれが普通なんですけどね。

szsznow
質問者

お礼

nag0720様! できました!!! ありがとうございます(≧▽≦)~~~!!! これで少数桁ありなし用で2枚用意していた帳票が1枚で済ませられます。 また、今回質問したことで色々勉強になりました。 本当にありがとうございました☆☆☆ それから、環境も書かずに質問して皆様にお手間を取らせてしまったこと、 この場をお借りしてお詫びいたします。 初心者ながら、そういう基本的なところは今後気をつけたいと思いますm(__)m

その他の回答 (4)

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.4

>If H_数量.Text = Fix(H_数量.Text) Then >H_数量.Text = Format(H_数量, "0") >End If 判定は不要だと思いますが。。。 VB環境がないので確認できませんが msgbox Format(1.0#, "0") で確認してください。

szsznow
質問者

お礼

またまたありがとうございます。 環境は、.netです。 そうすると話が変わってくるような気もするのですが。 情報少なくてすみませんでしたm(__)m

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.3

H_数量.Text = Format(H_数量.Text, "0.0") If Right(H_数量.Text, 2) = ".0" Then H_数量.Text = Format(H_数量.Text, "0") End If ではどうですか。

szsznow
質問者

お礼

ありがとうございます。 結果としては、ダメでした。 H_数量 の欄が全て『0』となってしまいます。 環境は.NET なのですが、この環境ではFormat関数をこのように使うことは出来ないのでしょうか・・ 単純に、 H_数量.Text = Format(H_数量.Text, "0") を試すと、全行 0 H_数量.Text = Format(H_数量.Text, "#,##0") は、全行 #,##0 と表示されてしまいました。 引き続きアドバイスお待ちしております。

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

下記ではダメでしょうか --- Format(H_数量,"0.#")

szsznow
質問者

お礼

ありがとうございます。 整数部分のみ表示したいので、Format(H_数量,"0.#")ではなく、 ● If H_数量.Text = Fix(H_数量.Text) Then H_数量.Text = Format(H_数量, "0") End If ● If H_数量.Text = Fix(H_数量.Text) Then H_数量.Text = Format(H_数量, "#") End If としてみましたが、どちらもダメでした。 Fix(▲▲) 、 Format(◆◆) 関数の後にくる▲▲と◆◆がダメなのでしょうか? H_数量 は、帳票上のTextBox で Datafield = 数量 「数量」はDBのフィールド名です。 例にあげたコード If H_数量.Text = "0.00" Then H_数量.Text = "" H_単価.Text = "" End If 』 (H_数量が0.00の時、H_数量欄とH_単価欄は空欄にする) はちゃんと動いているのですが。。

  • yhc3594
  • ベストアンサー率27% (25/92)
回答No.1

元の値の小数部を切り捨てた値と元の値を比較して、同一の場合は小数部0と判定すれば 良いと思います。 例.If H_数量.Text = FIX(H_数量.Text ) THEN という感じです。

szsznow
質問者

お礼

さっそくありがとうございます。 ただ、私の力ではコードが完成しません(><) If H_数量.Text = FIX(H_数量.Text ) THEN H_数量.Text = Fix(H_数量.Text) End If でしょうか? しかしこれでは帳票が表示できませんでした。 THEN のあと、 H_数量 の整数部分のみ表示 するコードはどう書けば良いでしょうか? 初心者過ぎてすみません!!

関連するQ&A

  • VB初心者。小数点以下の表示でつまづいています(2

    『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

  • 小数点以下を強引に表示させたい

    小数点以下を強引に表示させたいと考えています。 具体的には、「130」という値を「130.00」というように、小数点以下2桁まで表示させたいのです。3桁以下は切り捨てます。 これまでは、 $c = $a / $b; round($c, 2); という方法でやっていたのですが、$cがきっちり割り切れる値だと、どうも普通に小数点以下を表示させないようなのです。 例え「00」でも表示させたいのですが、そのような関数はありますでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 小数点以下がある時だけ表示する方法(点なし)

    Office365使用しています。 Excel書式設定で 小数点以下が存在しない場合は小数点を表示せず 小数点以下がある場合のみ、小数点以下の数字と小数点を表示をしたく 下記、2つの書式設定の組み合わせで実現しております 書式設定1 【数式】=IF(RIGHT(TEXT(A1,"0.#"),1)=".",TRUE,FALSE) 【表示形式】数値(-1234) 書式設定2 【数式】=IF(RIGHT(TEXT(A1,"0.#"),1)=".",FALSE,TRUE) 【表示形式】#,##0.#;[赤]-#,##0.# 小数点第二位を表示させるには、どこをどのように修正すれば良いのでしょうか。 お詳しい方、ご教授お願い致します。 -------------------- こういったことを質問すると、私の文章が悪いのか 「そんなことも分からないのか」といった嫌味なコメントが届きます。 分からないのでお尋ねしているので、そこはどうかご容赦ください。

  • 小数点の表示について

    Long型の変数の値を、 テキストボックスに表示しているのですが、 「10」の値を表示する時に 「10.000」と小数点以下3桁まで表示したいと考えております。 複数の値を並べて表示するので 桁数を合わせて見やすくしたいのですが なにか簡単な方法で実現できないでしょうか? 宜しくお願いします。 現在はFormat関数を利用しています Format(変数名, "##.###") 当然ですが「10.000」とは表示されません。

  • 小数点0以上と以下で1つのセルに入る値を変えたい

    会社の数値計算で困っています。 ある商品の数量が500.95リットル(セルA1)であれば0.5klと表示し、1000リットル(セルA2)であれば1klと表示します。 しかし、毎月数量が変わるので今月は上記の数量でも、来月には1000リットル(セルA2)だったものが800リットルになったりもします。 そこでタイトルにある様に、元の数量が1klに満たない場合は小数点0以下の値で、1kl以上であれば小数点0以上の値で表示する様にしたいのです。 どなたか良い方法をご存じであれば、教えて頂きたいので宜しくお願いします。

  • Excelの小数点以下表示・非表示の方法について

    Excel2000において、小数点以下の表示方法について教えてください。 条件は以下の通りです。 (1)小数点以下が存在するときは、小数点以下第2位まで表示する。 ※小数点以下第3位の処理は、切捨てでも四捨五入でも何でも構いません。 (2)小数点以下が存在しないとき(整数のとき)は、少数点以下は非表示。※小数点も非表示に。 ・・・というものです。 ご存知の方がいらっしゃいましたら、何卒ご協力くださいますようお願いします!

  • スプレッドシートの小数点以下の表示方法について

    スプレッドシートの小数点以下の表示方法について質問です。 スプレッドシートにて「1.23000(約123円)」の文字を小数点以下2桁だけ残し、残りのゼロ3つを消したいです。こんな感じ「1.23(約123円)」。 「1.20000(約120円)」の時も小数点以下2桁は残して「1.20(約120円)」のような表示にしたいです。 何か良い方法がありましたら教えて欲しいです。 私が試したのは、「テキストを列に分裂(スペース)」を使用すると、自動的に小数点以下のゼロが消えるのですが、1.20000の場合「1.2」の表示で小数点以下2桁を表示させることができず、、小数点以下の桁数を増やすを使用してゼロを付けました。 しかし、最終的には「1.20(約120円)」にように表示させたいため、分裂した列を合体(=A2&B2)すると、結局増やしたゼロが消えて「1.2(約120円)」と表示されてしまいます。 何か良い方法を教えて頂けますと幸いです。

  • Excelで小数点以下の表示

    お世話になります。 分かる方がいましたら返信お願い致します。 Excelにて、テキストと数字の組み合わせによる表示の時、数字部分を小数点以下1桁に統一して表示したいのですが、うまくいきません。 例えばA1=5、とB1=1として(A1、B1は変数) C1にA1÷B1の答えを「答えは5.0」と表記したいのですが、 C1="答えは"&A1/B1 とすると「答えは5」となり、小数点以下1桁が表示されないです。 解決方法として考えたのが、書式設定で表示形式を小数点以下1桁に指定する、 またはROUND関数で小数点以下1桁に統一する方法ですが、 両方共「答えは5.0」ではなく「答えは5」となってしまいます。 またセルを2つ使ってC1に「答えは」、C2に「5.0」と表示なら可能ですが、 表の一部の為、見た目が崩れてしまって嫌です。 解決方法が分かる方がいましたら、よろしくお願い致します。

  • 【FLASH】小数点以下の「0」も表示したい。(1 → 1.0 など)

    FLASH8(Win-XP)使用者です。 残り時間の秒数などを小数点以下第1位まで表示させたい場合、通常のやり方、 hyoji.text = Math.floor(jikan*10)/10; などですと、小数点以下が0の場合は0が表示されません。どうすれば1.0などと表示されるのでしょうか。 お詳しい方、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ACCESSで小数点以下の表示を制限する

    こんにちは。 ACCESS2003を使っています。 フォーム上で、テーブルの特定の項目(単精度浮動小数点型)を、小数点以下2桁まで表示させています。 この項目は事前に小数点以下3桁目を四捨五入しています。 そしてテーブルの定義で少数点以下2桁まで表示させています。 確かにそのとおり表示されるのですが、そのテキストボックスにカーソルを位置付けると小数点以下10桁以上の小さな数字が表示されてしまいます。 1.これは誤差として避ける事ができないのでしょうか? 2. カーソルを位置づけた時、指定桁数以下を表示させないようにはできないでしょうか?

専門家に質問してみよう