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

解決


青龍  2003-12-02 20:30:04  No: 110359

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


いちゆ  2003-12-02 21:11:42  No: 110360

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

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


青龍  2003-12-02 21:18:10  No: 110361

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


通りすがり  2003-12-02 21:26:41  No: 110362

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

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

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


青龍  2003-12-02 22:04:30  No: 110363

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


通りすがり  2003-12-02 22:28:06  No: 110364

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 22:39:51  No: 110365

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


nanashi  2003-12-02 22:53:26  No: 110366

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

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

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


青龍  2003-12-02 23:14:28  No: 110367

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


nanashi  2003-12-02 23:21:45  No: 110368

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

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


青龍  2003-12-02 23:29:21  No: 110369

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


いちゆ  2003-12-03 19:41:27  No: 110370

なんだか入力制限について書いているようなので、ためしにコードを書いてみました。
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 22:01:50  No: 110371

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加