• ベストアンサー

VB6で桁数チェック

VBの初心者の質問 項目の入力数が6byteなのですが、 入力数の桁が足りない場合は、処理中断し、エラーメッセージ出したいときはどうしたらいいのでしょうか。 よろしくお願いします。

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

  • ベストアンサー
回答No.1

テキストボックスに入力された ものと仮定しての答えです。 (テキストボックスでTabかEnterが押されたとして) Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) ' If KeyCode = vbKeyTab Or KeyCode = vbKeyReturn Then If Len(Text1.Text) <> 6 Then 'エラー処理 MsgBox "桁数エラーです。", vbInformation ' With Text1 .SelStart = 0 .SelLength = Len(.Text) .SetFocus End With ' Exit Sub Else '次の処理へ End If End If End Sub 6桁をIf文でどのように比較するかは ご自分で判断して下さい。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#140971
noname#140971
回答No.2

私流の書き方は次のようです。 Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)   Dim isError As Boolean   If KeyCode = vbKeyTab Or KeyCode = vbKeyReturn Then     isError = CBool(LenH(Me.Text1) < 6)     If isError Then       ErrorMsg "6バイト以下の入力ですので確定できません。"       KeyCode = 0     End If   End If End Sub <標準モジュール> Option Explicit Public Sub ErrorMsg(ByVal Msg As String)   MsgBox Msg, vbExclamation, " エラー発生のお知らせ" End Sub Public Function LenH(ByVal Text As String) As Integer   LenH = LenB(StrConv(Text, vbFromUnicode)) End Function

sinomori
質問者

お礼

どうもありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 桁数の設定

    早速質問させていただきます。 フォームで、年齢を入れるテキストがあります。 二桁以外の入力はさせないようにしたいのですが、定型入力で99としてしまうと、3桁目がただ打っても消えるだけになってしまいます。 これを、二桁以上だとエラーメッセージが出て、抜け出せないようにしたいと思っています。 ご教授お願いいたします。

  • VB5での有効桁数以上の計算結果について。

    現在、VB5をやっているのですが、以前の質問のログを見てさらに思ったのですが、乗除算で Double型で15桁や通貨型などで、有効桁数より大きな数(20桁)等を計算して、正しい数値を 表すには(指数ではなくて)何かいい方法があるのですか? 999,999,999,999,999 * 10 などの計算です。

  • エクセルVB 桁数を合わせる

    VB初心者です。 エクセルでマクロを作りたいのですが、下記内容で困っています。 A列に示したドットで区切った数値をB列のようにすべて3桁表記にしたいのですが、 わかりません。誰か教えてください。 A B 1 123.456.33.421 → 123.456.033.421  2 243.555.235.21 → 243.555.235.021 3 221.123.24.53 → 221.123.024.053

  • VB2008での表示可能桁数について

    VB2008EEで16進数と10進数の相互変換を行おうと思い、とりあえず下記のようなコードを書いたのですが、 ---------- Dim HOGE As Decimal HOGE = 16 ^ 16 MsgBox(HOGE) ---------- 出力の結果が「18446744073709600000」となります。 しかし、電卓で「16^16」を計算すると、 「18446744073709551616」となります。  VBでの16^16の結果=18446744073709600000  電卓での16^16の結果=18446744073709551616 ちなみに「16^15」までの結果はVBでも電卓でも同じでした。 「16^16」以上の結果は全て同じようにある程度の桁数で繰り上げされてしまっているようです。 ちなみに、データ型「Decimal」は「+/-79,228,162,514,264,337,593,543,950,335」まで 表示可能らしいので、特に桁不足という問題は無いはずだと思っています。 これの理由と、対応策のわかる方はいらっしゃいますでしょうか? ちなみに、最終的に「16^20」くらいまで計算したいと考えています。 よろしくお願いいたします。

  • 重複レコードのチェックができなくて困っています。

    UNIX / Cシェル ファイルが以下の条件のときにエラーとなるようにしたいのですが、どのような処理にすればよいかわかりません。 ファイルは各項目固定長(1つ目5バイト、2つ目6バイト、3つ目7バイト) AAAAABBBBBBDDDDDDD・・・(1) AAAAABBBBBBCCCCCCC・・・(2) EEEEEFFFFFFGGGGGGG・・・(3) EEEEEHHHHHHJJJJJJJ・・・(4) KKKKKLLLLLLMMMMMMM・・・(5) (1)と(2)のように頭2つの項目((1)でいえばAAAAAとBBBBBB)が一致している場合はエラーではないが、(3)と(4)のように頭1つの項目は一致しているが、2つ目の項目が違うものはエラーとなるように処理。 (5)のように1つ目の項目が一致するものがなければエラーではない。 初めての質問のため至らない点もあるかと思いますが、よろしくお願いします。

  • VBでの入力値制限について

    はじめまして。 VBのテキストボックスに値を入力していき、ある桁数になるとメッセージを表示する仕組みを作りたいと考えています。 例えばVBで用意したテキストボックスにキーボードで123と入力しキーボードの4を押した直後に「桁数は3桁までです。」というメッセージを表示したいのですがいい方法を教えていただけないでしょうか? 自分で以下のように作ってみたのですがこれだとキーボードで123と入力し次に4を入力した時にテキストボックスに4が表示されてからエラーが出ます。そうではなく4をテキストボックスに表示させずに4をおしたら以下のメッセージが出るようにしたいのです。 よろしくお願い致します。 Private Sub text1_Change() If Len(text1.Text) > 3 Then MsgBox "桁数は3桁までです。", vbOKOnly + vbInformation, "情報" End If End Sub

  • DataGridViewで入力チェック後、フォーカスをあてたい

    お世話になります。 現在VB2005で開発中なのですが、DataGridViewの処理で躓いております。 DataGridViewには「氏名」「住所」「生年月日」を入力できるようにしており、全ての項目において入力必須としています。 よって、どれか一つでも入力がなかった場合はエラーメッセージを表示させ、メッセージ表示後に該当項目のセルにフォーカスをあてたいと考え、ロジックを組んでおります。 仮に「氏名」が空白で、次の行の任意セルをクリックした場合、RowValidatedイベントで各セルに対し入力チェックを行い、メッセージを表示させた後にCurrentCellを空白だったCellにし、さらにEditModeで編集可能状態にすればいいと考えていたのですが、結果は最後にクリックした任意セルにフォーカスが移ってしまいます。 入力チェックを発生させるイベントに問題があるのか、カレントセルにフォーカスを当てる処理で問題があるのかで悩んでいる状態です。 どなたか心当たりがあれば教授願いたいです。 よろしくお願いいたします。

  • VB.NETでMSGBOXを使ってエラーを表示させる場合

    VB.NETでMSGBOXを使ってエラーを表示させる場合 VB6で MsgBox Error, vbInformation, "処理" と書くと、システムエラーが発生した場合、メッセージを表示してくれるのですが VB.netの場合上記 Error の部分はどうかえればいいでしょうか。

  • VS2005 ASP.NET 入力チェック

    VS2005 ASP.NETで テキストボックスに数字を入力する際に 5ケタまで入れないとエラーメッセージが出る というような処理はどうしたらいいでしょうか?

  • VB2005での画面サイズの固定の方法

    お世話になっております。VB2005初心者の者です。 画面サイズをマウスで変更できないようにするには どうしたらよいのでしょうか。 .NET以前では画面のプロパティを変更すればできた 処理なのですが、VB2005ではプロパティを探しても 設定する項目が見つかりませんでした。 また、イベントでResizeや、MouseUp等で設定を しようとしてもエラーが発生してうまく処理できません。 ご回答のほど、宜しくお願いいたします。

このQ&Aのポイント
  • FAX2100clで紙詰まりのエラーが発生しています。
  • データ出力後に記録紙が詰まっており、カバーを開けて取り除いても続けてエラーメッセージが表示されます。
  • お使いの環境はひかり回線です。
回答を見る