• ベストアンサー

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/17068)
回答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

  • 16進数

    Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii >= Asc("a") And KeyAscii <= Asc("f") Then Else KeyAscii = 0 Beep End If End Sub 上のソースだと数字が入りません。 どうすれば入力できますか。 ※zと入れると強制終了になってしまうので、上のソースを入れたんですが・・・ ※タグが崩れて見にくくてすいません

  • Back Spaceを入力可にするには?

    金額を入力して計算するルーチンを作成しています。 以下のコードで、数字以外は入力不可にしたのですが・・・・ 数値を訂正するためのBack Spaceも入力できなくて困っています。 0~9までしか受け付けないコードなのはわかっていますが、それに加えてBack Spaceも受け付けられるようにするにはどんなコードを書けばよいでしょうか。 Private Sub genkin_KeyPress(KeyAscii As Integer) If KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Then Exit Sub Else KeyAscii = 0 Beep End If End Sub

  • キー入力を制限しつつ、Ctrl+CやCtrl+Vを活かすには?

    数字とバックスペース以外入力できないテキストボックスTextBoxAを作りました。 Private Sub TextBoxA_KeyPress(KeyAscii As Integer) If KeyAscii <> vbKeyBack Then If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then KeyAscii = 0 End If End If End Sub と記述しましたが、Ctrl+CやCtrl+Vが効きません。 右クリックでコピー、ペーストはできるのですが、コントロールキー によるコピペを可能にするにはどうしたらいいでしょうか? どなたかよろしくお願いします。

  • keyascii=13

    if keyascii=13 then text1.setforcus end if とすると,プログラム自体に問題はないのですが, beep音が鳴ってしまいます。 上記のプログラムでしたいことはenterボタンを押すと 次のtextボックスに移りたいのですが, beep音が鳴らないようには出来ないのでしょうか。 ほかにこの方法以外にenterボタンを押したら 次のテキストボックスに移れる方法があれば,教えてください。 よろしくお願いします。

  • テキストの入力時、カーソルの移動をスムーズにしたい

     VB6で複数入力項目(テキスト/コンボボックス等)がある画面を作っているのですが、文字が最大桁数に達したら、次のコンボボックスへカーソル(=フォーカス)を移動し、次の入力項目へを行いたいのですが、 どうも思った様に、移動しないです。  以下は半角数字項目が最大文字数に達した場合、次のインプットボックスへフォーカスが移動する様に組んでみました。 Private Sub Txt_Input_KeyPress(KeyAscii As Integer) If KeyAscii <> 8 And (KeyAscii < 48 Or KeyAscii > 57) Then KeyAscii = 0 If Len(Txt_Input.Text) >= (Txt_Input.MaxLength - 1) Then Txt_Input2.SetFocus End If End Sub ところが、バックスペースでも1文字分と捉えてしまう様で、3文字入力の場合等は先頭から入力し直さないと、再入力も儘ならない状態です。 何かバックスペースも自然に効く形で同様の制御は行えないものでしょうか。 (尚、MaxLength - 1の部分は-1しないとフォーカスが動きませんでした。)

  • vb作成したらでbeep音が鳴ります。経験あるかたお願いします。

    KeyPressイベントを追加して、データ入力後にエンターキーを押すとbeep音が鳴ります。ほかではescキーも鳴りますが、その他は鳴らないで動くようです。 単純に新規作成から、Form1へtestテキストコントロールを追加して、以下の記述をしただけなのですが、どうしてなるのか原因がわかりません。 Private Sub test_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then test.text="ok" End If End Sub ←この次でbeep音! 環境はvb6.0、windows2000。 仕様なのでしょうか? ハード側の問題なのでしょうか? 経験あるかた宜しくお願い致します。

  • 特定の文字だけ太文字にするには・・

    簡易チャット作ってます。発言者の名前の部分だけ太文字にしようとしてい ます。 テキストボックス2に文を書いてエンターを押すとテキストボックス1に書 花子:~~~  と書き込まれるようにはできました。花子の部分 だけふと文字にするには?? Private Sub Text2_KeyPress(KeyAscii As Integer) If (KeyAscii = 13) Then Text1.Text = Text1.Text + "花子:" + Text2.Text + vbCrLf Text2.Text = "" KeyAscii = 0 End If End Sub

  • 素数の計算について教えてください

    「2以上の整数を入力すると、入力した数まで素数をすべて表示する。」 どこが間違っているか教えてください!! 5行目あたりからだと思うのですが・・・。 お願いします!! Dim Number As Long If Long.TryParse(TextBox1.Text, Number) AndAlso Number >= 2 Then For i As Integer = 2 To Number Step 1 Dim d As Long = 2 Do Until Number Mod d = 0 d = d + 1 Loop If d = Number Then Label1.Text = " " & i Else Label1.Text = "2以上の整数を入力してください" End If Next End If End Sub

  • VBA エンターキーでイベントに入りたい。

    テキストボックスにデータ入力後エンターキーの押下でイベントに入りたいのですが、下記のコーディングで[通過]メッセージが表示されません。英数字は通過しますが、エンターキーは動作停止します。 これと全く同じコーディングでVB6は正しく動きます。(ただし、Pvate Sub text1_KeyPress(KeyAscii As Integer)に変更してます。) <コーディング> Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Msgbox "通過" If KeyAscii = vbKeyReturn Then KeyAscii = 0 End If End Sub これが出来ると、そのつどキーボードから手を離さずに済むので作業効率がグンとあがります。どうかよろしくご教示ください。Excel2003SP3

  • [VBA] IFと絶対値の組み合わせ

    テキストボックスを利用して計算する時にIF文を利用しているのですが、以下の条件での計算が上手くいきません。 ・テキストボックスは3つ。オブジェクト名はD1、D2、D ・D1とD2に数値が入力されると同時に計算する(Changeイベント) ・D1は正の値のみを持つ ・D2は正、0、負の値を持つ 上手くいかない部分 ・条件:D2が負の値を取る時、絶対値がD1より大きい場合は計算する。                         D1より小さい場合は計算しない。 構文は下記の通りです。 Private Sub D1_Change() Dim R1 As Single Dim R2 As Single Dim R As Single If IsNumeric(D1) And D1 > 0 And D1 <> "" Then R1 = D1 / 2 Else D = "" Exit Sub End If If IsNumeric(D2) Then Else D = "" Exit Sub End If If D2 = 0 Then R = R1 ElseIf D2 > 0 Then R2 = D2 / 2 R = 1 / (1 / R1 + 1 / R2) ElseIf D2 < 0 Then If Abs(D2) > D1 Then R2 = D2 / 2 R = 1 / (1 / R1 + 1 / R2) Else D = "" Exit Sub End If Else D = "" Exit Sub End If D = Format(R * 2, "##.###") End Sub これで計算すると、D2が負の値で且つ絶対値がD1より大きい時、 If Abs(D2) > D1 Then R2 = D2 / 2 R = 1 / (1 / R1 + 1 / R2) Else D = "" Exit Sub End If の部分でElseの方で計算が進んでしまいます。 (Abs(D2)>D1でなく、D2>D1として計算している?) 何かよい構文はありませんでしょうか?

専門家に質問してみよう