Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー

16進数

(.net) テキストボックスに16進数のみ入力が出来るようにするにはどうすればいいのdしょうか? VB6では下記ので出来たと思うのですが netではできないのです。 教えて下さい。 If KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Then Else If KeyAscii >= Asc("a") And KeyAscii <= Asc("f") Then Else KeyAscii = 0 Beep End If End If

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

  • ベストアンサー
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

あんまりスマートじゃないけど If not((KeyAscii >= Asc("0") And KeyAscii <= Asc("9")) or (KeyAscii >= Asc("a") And KeyAscii <= Asc("f"))) Then KeyAscii = 0 Beep End If と したらいいでしょう。

hiyoruki
質問者

お礼

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

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

その他の回答 (2)

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

VB.NETでないが、この辺はVBの根幹に関わるところなので、変化ないと思いますので、参考に。 Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) For i = 1 To Len(TextBox1.Text) a = Asc(Mid(TextBox1.Text, i, 1)) ' MsgBox a Select Case a Case Is <= 57 And a >= 48 GoTo p01 Case Is <= 102 And a >= 92 GoTo p01 Case Else MsgBox "Err" Exit Sub End Select p01: Next i MsgBox "OK" End Sub Isのところ辺りとか、Andなどや、なぜか92と102の前後を逆にすると旨く行かないとかご参考までに。 イベントをTextBoxのDblClickなどにしているのは、小生の無知のせいで、良いものがあれば変えて下さい。

hiyoruki
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 これもスマートじゃないですが、16進数を意識した方法です。 Private Sub Text1_KeyPress(KeyAscii As Integer)   Dim ret As Double   On Error Resume Next   ret = CDbl("&H" & Chr(KeyAscii))   If Err.Number <> 0 Then     KeyAscii = 0     Err.Clear   End If End Sub

hiyoruki
質問者

お礼

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

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

関連するQ&A