こんにちは!!

KeyPressイベントでBSキーとEnterキーのイベントを取得して、
いろいろな処理を書いているんですけど、
DelキーをBSキーと同じ処理、矢印キーをEnterキーと同じ処理にさせたいです。

それで質問なんですが、KeyPressイベントでDelキーと矢印キーのイベントを
取得する方法ってあるのでしょうか??
KeyDownかKeyUpイベントで取得するしかないのでしょうか??

ご存知の方がいらっしゃったら回答、よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

キーアスキー イベントではDELキーの取得は無理です。


キーダウンを使用するのでは、まずいのですか?

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
  Select Case KeyCode
    Case vbKeyDelete, vbKeyBack
      Debug.Print KeyCode
  End Select
End Sub
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。

>キーアスキー イベントではDELキーの取得は無理です。
やっぱり無理なんですよね・・・。

とりあえず、KeyDownイベントでDELキーの取得をして、
KeyPressイベントBSキーのKeyAsciiでを呼ぶようにしてみようと思います。

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

お礼日時:2002/01/16 08:58

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QVB.NETで参照設定

Visual Basic .NET について質問致します。
VB 6.0は使用していたのですが、.NETに関して初心者です。

VSSにてファイル管理をしています。
共通で使用するためののオリジナルDLLを作成し
参照設定をしているのですが、参照パスがフルパスで設定されているため
(プロジェクトのプロパティページの「参照パス」のフォルダのところ)
VSSから最新プロジェクトファイルを取得した後
いつも参照パスを自分のローカルのパスに変更しなおさなければいけません。
とても効率が悪く、もっといい方法があるかと思うのですが、
教えていただきますようお願い致します。

Aベストアンサー

こんにちは。

最初に参照設定するときに「フルパス」で指定してたのかなぁ・・・?

一度参照設定を外して、アプリを終了。
プロジェクトフォルダ内のコピーしてきているDLLを削除。
アプリを起動して、参照設定を追加。
(この時、ローカルのDLLの場所を指定)

で、どうですか?
(^^ゞ

Q【KeyDown】キーコードについて

Visual Basic について質問です。

「KeyDown」「KeyUp」で、「キーを押した時、離した時に…」というプログラムが書けますよね。

  Private Sub Form1_KeyDown(…省略) Handles Me.KeyDown
    If e.KeyCode = Keys.A Then
       …(1)
    ElseIf e.KeyCode = Keys.B Then
       …(2)
    ElseIf e.KeyCode = Keys.D0 Then
       …(3)
    End If
  End Sub

こんな感じで、
「A」キーが押されたら処理(1)を実行
「B」キーが押されたら処理(2)を実行
「0」キーが押されたら処理(3)を実行
という風なプログラムを作っているのですが、
右の方にある「@」キーや、
カギカッコのキーや、
ひらがなの「れ」「け」「む」「ね」「る」「め」「ろ」のキーや、
ENTERキーの指定方法が分かりません。

このキーが使えないと、プログラムとして成り立たなくなってしまうので、非常に困っています。

↓このページに、いろいろなキーの指定方法が書かれていましたが、
  ttp://msdn2.microsoft.com/ja-jp/library/system.windows.forms.keys(VS.80).aspx
どれがどのキーなのか分かりませんでした。
適当にそれらしい物でやってみましたが、どのキーを押しても反応無しでした。
「Enter」キーは、「Enter」で指定するように書かれていましたが、「Enter」キーを押しても無反応でした。

方法を教えていただければ幸いです。

Visual Basic について質問です。

「KeyDown」「KeyUp」で、「キーを押した時、離した時に…」というプログラムが書けますよね。

  Private Sub Form1_KeyDown(…省略) Handles Me.KeyDown
    If e.KeyCode = Keys.A Then
       …(1)
    ElseIf e.KeyCode = Keys.B Then
       …(2)
    ElseIf e.KeyCode = Keys.D0 Then
       …(3)
    End If
  End Sub

こんな感じで、
「A」キーが押されたら処理(1)を実行
「B」キーが押されたら...続きを読む

Aベストアンサー

No.2です。
>とにかく「れ(;,+)」のキーが押された時、離された時、を指定できれば良いのですが、このような指定をすることはやはり無理なのでしょうか…
ボタン操作をラベルへ表示する為、FormにLabelを2つ配置して下さい。
以下のプログラムをコピー&ペーストして下さい。
↓↓↓↓↓↓↓↓↓↓
'ボタンが押された瞬間のイベントをラベルへ表示する
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case 13
Me.Label1.Caption = "Form_KeyDown" & "[Enter]が押されたときの処理"
Case 187
Me.Label1.Caption = "Form_KeyDown" & "[れ]が押されたときの処理"
Case 192
Me.Label1.Caption = "Form_KeyDown" & "[@]が押されたときの処理"
Case Else
Me.Label1.Caption = "Form_KeyDown" & " Case " & KeyCode & " を追加する。"
End Select
End Sub

'ボタンが離れた瞬間のイベントをラベルへ表示する
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case 13
Me.Label2.Caption = "Form_KeyUp" & "[Enter]が押されたときの処理"
Case 187
Me.Label2.Caption = "Form_KeyUp" & "[れ]が押されたときの処理"
Case 192
Me.Label2.Caption = "Form_KeyUp" & "[@]が押されたときの処理"
Case Else
Me.Label2.Caption = "Form_KeyUp" & " Case " & KeyCode & " を追加する。"
End Select
End Sub
↑↑↑↑↑↑↑↑↑↑
※「KeyPress」は、ボタンを長押ししている間に発生するイベントです。
elseで表示されるKeyCodeをcaseで追加すればボタンを押した時/離した時のイベント処理が可能だと思います。
但し、「Shift+れ=+」等の組合せが必要な操作は、KeyPressを使用しないと処理が困難だと思います。

No.2です。
>とにかく「れ(;,+)」のキーが押された時、離された時、を指定できれば良いのですが、このような指定をすることはやはり無理なのでしょうか…
ボタン操作をラベルへ表示する為、FormにLabelを2つ配置して下さい。
以下のプログラムをコピー&ペーストして下さい。
↓↓↓↓↓↓↓↓↓↓
'ボタンが押された瞬間のイベントをラベルへ表示する
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case 13
Me.Label1.Caption = "Form_KeyDown" & "[Enter]が押されたと...続きを読む

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

テキストボックスにデータ入力後エンターキーの押下でイベントに入りたいのですが、下記のコーディングで[通過]メッセージが表示されません。英数字は通過しますが、エンターキーは動作停止します。
これと全く同じコーディングで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

Aベストアンサー

こんにちは。

>ご指摘のオブジェクトとプロシージャは間違いないことを確認しています。(TextBox1,keyPress)コードのロジックはこれ以上簡単に書きようがないほど単純明快です。

>Excelで実際にこのコードを実行していただけませんか。

ご自身のコードが間違いがないと思い込んでいられるから、そういう発言をされるのだと思いますが、ここでのお話の前提は、あくまでも、VBAです。VB6ではありません。

私が、期待通りの反応を示さないので、「実際にこのコードを実行してください」とおっしゃっているようですが、はっきり言えば、その最初のコードは、VBAでは間違っています。それに気がついてください。

質問のコードのままのコードでは、Enter キーのイベントは、取れないのです。別にPCの故障でもソフトの問題でもないし、こちらが試していないわけでもありません。

Visual Basic とVBAは、細かい点で違います。

VBAのこの種のイベントの KeyAscii では、VB6 で取れる、EnterキーのKeyAsciiの 「13」 は、取れません。 KeyAscii は、MSForms.ReturnIntegerとなって、Integer ではありません。

だから、私は、その代わりとして、KeyDown イベントを使えばよいとしているわけなのです。

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If KeyCode = vbKeyReturn Then
  MsgBox "Enterキーが入りました", 64
  'KeyCode =0
 End If
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 MsgBox "通過"
End Sub

こんにちは。

>ご指摘のオブジェクトとプロシージャは間違いないことを確認しています。(TextBox1,keyPress)コードのロジックはこれ以上簡単に書きようがないほど単純明快です。

>Excelで実際にこのコードを実行していただけませんか。

ご自身のコードが間違いがないと思い込んでいられるから、そういう発言をされるのだと思いますが、ここでのお話の前提は、あくまでも、VBAです。VB6ではありません。

私が、期待通りの反応を示さないので、「実際にこのコードを実行してください」とおっしゃってい...続きを読む


人気Q&Aランキング

おすすめ情報