• 締切済み

小数か整数かを判定する方法

お世話になります。 ただいま、VB6で悩んでいる事があり質問させていただきに参りました。 1: あるテキストボックスがあり、それには数字のみ入力するのですが、 小数が入力された場合、小数点第1位までしか入力させない、または小数点第2位以下が入力されていた場合、エラーメッセージ表示という処理をしたいのです。 例えば、1.5という文字の入力はOKですが、1.55と入力された場合は、エラーメッセージを表示。 2: 上記のテキストボックスに整数が入力されていたら、Format関数で、"00000"というカタチにして、小数が入力されていたら、"000.0"というカタチにしたいのです。 整数か?小数か?という判定方法が分からず困っています。 熟練者の方々にはとても簡単な事かもしれませんが・・・。 ご教授の程、どうかよろしくお願いします。

みんなの回答

  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.7

1: Dim BfrUpdValue As String Dim ShosuuKeta As Integer Private Sub Text1_GotFocus() ShosuuKeta = 1 BfrUpdValue = Text1.Text End Sub Private Sub Text1_Change() If (Val(Text1.Text) * 10 ^ ShosuuKeta) - _ Int(Val(Text1.Text) * 10 ^ ShosuuKeta) <> 0 Then Text1.Text = BfrUpdValue End If BfrUpdValue = Text1.Text End Sub 2: Private Sub Text1_LostFocus() If Val(Text1.Text) = Int(Val(Text1.Text)) = 0 Then Text1.Text = Format$(Val(Text1.Text), "00000") Else Text1.Text = Format$(Val(Text1.Text), "000.0") End If End Sub

  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.6

1: Dim BfrUpdValue As String Dim ShosuuKeta As Integer Private Sub Text1_GotFocus() BfrUpdValue = Text1.Text End Sub Private Sub Text1_Change() If (Val(Text1.Text) * 10 ^ ShosuuKeta) - _ Int(Val(Text1.Text) * 10 ^ ShosuuKeta) <> 0 Then Text1.Text = BfrUpdValue End If End Sub 2: Private Sub Text1_LostFocus() If Val(Text1.Text) = Int(Val(Text1.Text)) = 0 Then Text1.Text = Format$(Val(Text1.Text), "00000") Else Text1.Text = Format$(Val(Text1.Text), "000.0") End If End Sub

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.5

リアルタイムでチェックしたいということであればKeyPressかChangeイベントあたりで入力される値を常にチェックして、"."の入力されたらフラグをたてて色々場合分けするとか。 リアルタイムでなくていいのであれば、一通り入力した後に入っている値を↓の回答者さんのアドバイス通りにチェックしてエラーですとか返せば良いかと。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

テキストボックスをインプットボックスに置換えています。SPLIT関数を使いました。VB6から使える。 テキストボックスでも、どちらでも、チェック後は、VAL()で数値化しておきましょう。 Sub test07() n = InputBox("数値") a = Split(n, ".") u = UBound(a) Select Case u Case 0 MsgBox "整数" Case 1 MsgBox "小数" Case Is >= 2 MsgBox "エラー" End Select End Sub

回答No.3

VB最近触ってないので、演算子がおかしかったらすいません。 A-Fix(A*10)/10 <> 0 もしくは誤差分を許容して、 Abs(A-Fix(A*10)/10) >= 10^(-N) こういう判定でどうでしょう? Nは適当な整数(10~15ぐらい)を入れます。

  • palmmy
  • ベストアンサー率38% (841/2170)
回答No.2

文字列として処理すればよいかと思います。 (1)小数点の有無判定 (2)小数点の一判定 文字列の長さと、位置で小数点以下の桁が分かると思います。

  • ikazuti
  • ベストアンサー率27% (130/469)
回答No.1

1に関してですが、 テキストボックスに入力するとき、if文で、「.」(少数点)の有無を調べ、「.」以下の数値が二つになった時点でメッセージボックスを表示。 それと同時に入力された数字を消す。 これで出来ませんでしょうか。 あと、小数点だけが入力されたら自動的に前に0を付けるとかの機能もあった方が良いかもしれません。

関連するQ&A

  • 入力値が小数なら、整数部・小数部の桁チェックをしたい。

    VB2005環境です。 テキストボックスに数値が入力された時、整数部分が4桁以上か、 小数部分が2桁以上になっている場合、警告メッセージを出したいと 考えています。 具体的には、 0.1→OK 99.9→OK 100.1→OK 0.01→NG 1001.9→NG 0.99→NG 1111→NG テキストボックスは数字以外の入力も許可しており、数字を 入力した場合だけのチェックです。 まずIsNumericで数値判定を行っているのですが、その後、上述の 小数桁チェックをどうしたら良いか悩んでいます。 また、99を入力した場合は99.0、09.1と入力した場合には9.1と、 整数部は一番左側に0があれば消し、小数部は未入力ならば".0"を 追加できたらと思っているのですが、うまくいきません。 実現するために必要な処理は、 ・入力値が数値か ・数値であれば、整数か、小数か ・整数部の桁チェック ・小数部の桁チェック(小数時) ・整数であれば、999.9の形になるよう変換 といったところかなと思うんですが、まず小数チェックで 躓いています。 参考にロジックを交えて教えていただけないでしょうか。 宜しくお願いします。

  • 整数かどうかチェックする

    テキストボックスに数字を入力させてボタンを押した時、 その数字が1桁の整数(0から9)でなければエラーメッセージを出すようにしたいのですが、何か簡単なコードはありますか? (5.6などの小数や、"a"や"あ"など数字ではない文字が入力された場合も同様にエラーを出したい) 1つずつ0から9までifでチェックしなければいけないのでしょうか。

  • 整数を1000で割り小数点つけた形の文字列に変換したい・・(例12000→12.000)

    VB.NETです。 TextBoxに入力された整数(例12000)を、1000で割り、小数点第3桁まで有効にして、表示したいです。 String.Format(TextBox値, "#.000")でやろうとしていますが、“12”で表示されてしまいます。 小数点を有効した形で、文字列に変換するには、どうすればよろしいでしょうか?

  • .NETでの文字のフォーマットと入力マスク

    VB.NETのテキストボックスにデータを表示するときのフォーマットの指定方法がわかりません。 データベースから「123456」という数をとってきて、テキストボックスには「123,456」と表示するにはどうすればよいのでしょう? また入力するときに整数部3桁+小数部2桁までで入力してもらうにはどうすればいいでしょう? (例)123.45と入力→OK    1234.5と入力→整数部の桁が多いのでエラー    1.234と入力→小数部の桁が多いのでエラー これはテキストボックス以外のものを使用してもかまいません。

  • エクセルで、小数点が整数に表示されてしまう

    初めて質問します。 エクセルにて、小数点(2.5)で入力するも、 整数で(3)で表示されてしまいます・・。 どこを操作すればちゃんと小数点で表示されるのでしょう・・? 仕事がはかどらず困っています。 誰か教えてください!

  • ExcelVBAでデータ型を判定し、エラー値を返すプログラム

    Excelのプログラムでテキストボックスに入力すると、小数点型か判定し、エラーの場合、エラー値を返すようなプログラムを作りたいのですがどのようにしたらいいでしょうか? a = エラー(CSng(TextBox1.Text)) 多分こんな感じになると思うのですが。 あとエラーが出ても特にその後の処理には影響ないので、 On Error Resume Next このように、エラーが出てもいいようにしておけばよいでしょうか? 回答よろしくお願いします。

  • VBA小数点以下3桁設定の判定方法を教えてください

    Excel Vbaで小数点以下3桁の設定がされているか判断する方法を教えてください。 小数点以下3桁の設定がされているのか知りたくて、対象セルの NumberFormat の値を「0.000」か「0.000_」で比較してもうまくいかない場合があります。その値が小数点以下ちょうど3桁の有限小数の場合は小数点以下3桁の設定をしても、NumberFormat の値は「General」のままであるのがその理由みたいです(?)。「General」を比較の値に採用しても3桁であるかの情報が得られそうにないと思えるので困っています。小数点以下3桁の有限小数であるかの判定方法を別途用意するしかないのでしょうか。その場合は、簡単で正確な判定方法を教えてください。ちなみに小数は8桁以内の整数と8桁以内の整数の商(割り算)になります。 よろしくお願いします。

  • VBA 小数点の存在判定

    Round()関数で4.95を小数第1まで表示するようにすると5となります。 表示形式として整数である場合「*.0」を つけたいのです。 上記だと「5.0」ですね。 小数点有無の判別関数かロジック的なものが ございましたらよろしくお願いいたします。

  • 正整数の半角数字かどうか判定する

    VB.NET2008を使っているのですが、 TextBox1に入力された文字が正整数の半角数字かどうかの 判定をしたいのですが、何かいい方法はないでしょうか? どなたかよろしくお願いします。

  • 整数って・・・

    ちょっと確認させてください。 整数って、小数点の付いていない数字のことを言うんですよね? 例えば・・・ エクセルで関数を使い、平均値を計算しました。 その数字が「19.6369」となった場合、=ROUND(AVERAGE(A**:A**),0)というような関数で小数点以下を表示させないようにして、数字が「20」でいいのでしょうか? 問題に整数として表示させなさいとあったのですけど、分かる方、お願いします。