テキストボックスに入力された16進数が1〜9・A〜Fの範囲で入力されているか判断するのと、10進数に変換したときに10進数の値が‐32768〜32767になるような16進数の値を判断するにはどうしたら言いのでしょうか?
>テキストボックスに入力された16進数が1〜9・A〜Fの範囲で
>入力されているか判断するのと、
Mid$で一文字ずつ調べていくのが手っ取り早い。
>10進数に変換したときに10進数の値が
>‐32768〜32767になるような16進数の値を判断するには
>どうしたら言いのでしょうか?
Val関数を使ってIntegerの範囲に変換すれば?
ありがとうございます。そのほかにASCIIコードを使って判断できるようなのですがそのやり方ご存知でしょうか?
>テキストボックスに入力された16進数が1〜9・A〜Fの範囲で
>入力されているか判断するのと、
判断するのではなくそれしか入力できないようにするのは駄目なんでしょうか?
>10進数に変換したときに10進数の値が
>‐32768〜32767になるような16進数の値を判断するには
>どうしたら言いのでしょうか?
別に10進だからどうとか16進だからどうって問題ではないでしょう。
言いたい事は文字列を数値で比較するには?ってことなんでしょうか?
内容変えたら
10進にしたときに10進の値が1〜2になるような16進の値の判断するにはどうしたらいいでしょう?ってことですよね?
判断って言うか、通りすがりさんが言うようにそれしか入力できないようにしてそれ以外が入力されたらエラーをだしたいってことです。説明の仕方悪くてすいません。
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
これでいいのかな?ちょっと不安です。
ありがとうございます。プログラムとしてはこれでいいのですが、プログラム内容が分かりません(>_<)詳しく教えていただければ嬉しいのですが。
これだけだとコピペされた時にダメだと思うんで、Changeイベントでチェックするか
10進数に変換する時にエラーメッセージを出した方が良いと思います。
> 10進数に変換したときに10進数の値が‐32768〜32767になるような16進数の値を判断するにはどうしたら言いのでしょうか?
Integerは16ビットなので16進数では4桁です。
テキストボックスに4桁以上入力されているかどうかを見れば良いでしょう。
教えていただいたのですが、課題ではコントロールコードを使ってもできるようなことを書いてるんですがよく分かりません(>_<) Changeイベントもわからないです。すみません(;_;)
コントロールコードって何のことですか?
Changeイベントはテキストを変更した時に起こるイベントです。
ヘルプ見て下さい。
ありがとうございます。課題にはコントロールコードと書いてありますが、たぶん文字コードだと思われます。
なんだか入力制限について書いているようなので、ためしにコードを書いてみました。
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
ありがとうございました。
ツイート | ![]() |