メッセージボックスへのエラーの出し方

解決


青龍  2003-12-02 11:30:04  No: 110359  IP: [192.*.*.*]

テキストボックスに入力された16進数が1〜9・A〜Fの範囲で入力されているか判断するのと、10進数に変換したときに10進数の値が‐32768〜32767になるような16進数の値を判断するにはどうしたら言いのでしょうか?

編集 削除
いちゆ  2003-12-02 12:11:42  No: 110360  IP: [192.*.*.*]

>テキストボックスに入力された16進数が1〜9・A〜Fの範囲で
>入力されているか判断するのと、
Mid$で一文字ずつ調べていくのが手っ取り早い。

>10進数に変換したときに10進数の値が
>‐32768〜32767になるような16進数の値を判断するには
>どうしたら言いのでしょうか?
Val関数を使ってIntegerの範囲に変換すれば?

編集 削除
青龍  2003-12-02 12:18:10  No: 110361  IP: [192.*.*.*]

ありがとうございます。そのほかにASCIIコードを使って判断できるようなのですがそのやり方ご存知でしょうか?

編集 削除
通りすがり  2003-12-02 12:26:41  No: 110362  IP: [192.*.*.*]

>テキストボックスに入力された16進数が1〜9・A〜Fの範囲で
>入力されているか判断するのと、
判断するのではなくそれしか入力できないようにするのは駄目なんでしょうか?
>10進数に変換したときに10進数の値が
>‐32768〜32767になるような16進数の値を判断するには
>どうしたら言いのでしょうか?

別に10進だからどうとか16進だからどうって問題ではないでしょう。
言いたい事は文字列を数値で比較するには?ってことなんでしょうか?

内容変えたら
10進にしたときに10進の値が1〜2になるような16進の値の判断するにはどうしたらいいでしょう?ってことですよね?

編集 削除
青龍  2003-12-02 13:04:30  No: 110363  IP: [192.*.*.*]

判断って言うか、通りすがりさんが言うようにそれしか入力できないようにしてそれ以外が入力されたらエラーをだしたいってことです。説明の仕方悪くてすいません。

編集 削除
通りすがり  2003-12-02 13:28:06  No: 110364  IP: [192.*.*.*]

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii <> 45 And _
    KeyAscii <> 8 And _
    KeyAscii < 49 Or _
    KeyAscii > 57 And _
    KeyAscii < 65 Or _
    KeyAscii > 70 And _
    KeyAscii < 97 Or _
    KeyAscii > 102 _
    Then KeyAscii = 0
End Sub

これでいいのかな?ちょっと不安です。

編集 削除
青龍  2003-12-02 13:39:51  No: 110365  IP: [192.*.*.*]

ありがとうございます。プログラムとしてはこれでいいのですが、プログラム内容が分かりません(>_<)詳しく教えていただければ嬉しいのですが。

編集 削除
nanashi  2003-12-02 13:53:26  No: 110366  IP: [192.*.*.*]

これだけだとコピペされた時にダメだと思うんで、Changeイベントでチェックするか
10進数に変換する時にエラーメッセージを出した方が良いと思います。

> 10進数に変換したときに10進数の値が‐32768〜32767になるような16進数の値を判断するにはどうしたら言いのでしょうか?

Integerは16ビットなので16進数では4桁です。
テキストボックスに4桁以上入力されているかどうかを見れば良いでしょう。

編集 削除
青龍  2003-12-02 14:14:28  No: 110367  IP: [192.*.*.*]

教えていただいたのですが、課題ではコントロールコードを使ってもできるようなことを書いてるんですがよく分かりません(>_<) Changeイベントもわからないです。すみません(;_;)

編集 削除
nanashi  2003-12-02 14:21:45  No: 110368  IP: [192.*.*.*]

コントロールコードって何のことですか?

Changeイベントはテキストを変更した時に起こるイベントです。
ヘルプ見て下さい。

編集 削除
青龍  2003-12-02 14:29:21  No: 110369  IP: [192.*.*.*]

ありがとうございます。課題にはコントロールコードと書いてありますが、たぶん文字コードだと思われます。

編集 削除
いちゆ  2003-12-03 10:41:27  No: 110370  IP: [192.*.*.*]

なんだか入力制限について書いているようなので、ためしにコードを書いてみました。
ExcelのVBAですけど、プロシージャの中身をVBに移植すれば大丈夫のはずです。



Private Sub Text1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Len(Text1.Text) > 3 Then KeyAscii = 0

Select Case LCase$(Chr$(KeyAscii))
    Case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", _
         "a", "b", "c", "d", "e", "f"
    Case Else
        KeyAscii = 0
End Select
End Sub

編集 削除
青龍  2003-12-04 13:01:50  No: 110371  IP: [192.*.*.*]

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

編集 削除