• ベストアンサー

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

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

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

どもども田吾作7です >If KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Then Exit Sub ここの意味を理解されてますでしょうか? これはパラメータのKeyAsciiの入力制限を行っております。 Asc(0)は48です。Asc("9")は57です。 まずそれはそれでおいといて、、、 プレスイベントのコードをコメントして、 Debug.Print KeyAscii と書いて文字入力してみてください。 イミディエイトウィンドウに、入力された文字コードが出力されます。 同時に[BackSpace]が8という値が得ることもわかると思います。 ですのでプレスイベントは、次のようになります。 If KeyAscii >= Asc(0) And KeyAscii <= Asc(9) Then Exit Sub If KeyAscii = 8 Then Exit Sub KeyAscii = 0 Beep これは参考までなのですが・・・ Microsoft Masked Edit Controlというのをご存知ですか? メニューバーの[プロジェクト][コンポーネント]の中に存在しています。 これを使用すると、数値、日付など、入力制限を行うことの出来ます。 でわでわ

xiaolong_goo
質問者

お礼

ありがとうございます。 もう初心者には何が何だか・・・ の世界で本当に助かります。 Microsoft Masked Edit Control を早速フォームに乗せてみました。 こんな便利なコントロールがあるなんて、「そんなん知ら~ん!」って感じでした。

その他の回答 (1)

noname#9414
noname#9414
回答No.1

手元にVisual Basicがないので、確認はしていませんが 以下のコードではダメなのでしょうか? Private Sub genkin_KeyPress(KeyAscii As Integer)  If(KeyAscii >= Asc("0") And (KeyAscii <= Asc("1")) _    Or KeyAscii <> Asc(バックスペースの番号) Then   Exit Sub  Else   KeyAscii = 0   Beep  End If End Sub これではだめなのでしょうか? ではでは☆

xiaolong_goo
質問者

お礼

教えていただいたコードを参考に何とか解決しました。 ありがとうございました。

xiaolong_goo
質問者

補足

or でつなぐとなぜかどんなキーでも受け付けてしまいます。 なぜでしょうか・・・ 何度試してもだめなんですよね。 どこかコードがまちがっているのかなぁ・・・