
いつもお世話になっています。
VBAのユーザーフォーム上で、KeyDown イベントを使いたいのですが、下のコードが動きませんでした。
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If e.KeyCode = Keys.z Then
MsgBox "効いてるよ!"
End If
End Sub
エラー表示も出ません。
ウェブで調べたところ、VBでは「KeyPreview」プロパティーを「true」にすれば解決するという記事をあちこちで見かけましたが、VBA(Excel2003)のユーザーフォームプロパティには、そのような項目が見当たりません。コード上で無理やり設定してみるとエラーになります。
どのようにすれば解決するでしょうか? お知恵をお貸し下さい。
No.2ベストアンサー
- 回答日時:
フォーム上に、テキストボックスなどの
「キー入力を受け取るコントロール」があると、
そっちのコントロールの KeyDown イベントで処理されてしまって、
フォームの KeyDown イベントが呼ばれません。それを解決するのが
KeyPreview プロパティなわけですが、
……Excel には存在しないないようですね。
Access にはそれ相当のものがあるのに。
と言うわけで、処理を関数化して、すべてのコントロールの
KeyDown イベントから呼び出すようにする、しか手はなさそうです。
新しいコントロールを追加して KeyDown イベントを書き忘れて、
「キーが効かないときがあるんだけど……」
ってことになりやすいので気をつけましょう。
ご回答有難うございます。お礼が遅くなってすいません。
仰る通り、他にボタンを配置していたのがいけなかったようです。ボタンを使わない方法に変えてなんとか処理しました。
有難うございました。
No.1
- 回答日時:
エクセルのマクロ(VBA)ということでしょか?
こちらは2003ではありませんが
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then
MsgBox "ok"
End If
End Sub
で動きますが。
(ENTER押下時の処理です)
ご回答有難うございます。お礼が遅くなってすいません。
確かに動きますね。どうやらボタンを配置していたのがいけなかったようです。有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
KEYPREVIEW=TRUEについて。意味が分かりません・・。
Visual Basic(VBA)
-
ExcelVBAのユーザーフォームでescキーを使う方法
Visual Basic(VBA)
-
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
-
4
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
5
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
6
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
7
テキストボックス(VBA)でEnterを押したときに作動するマクロ
Access(アクセス)
-
8
Excelマクロ、フォーム入力での矢印移動禁止
Excel(エクセル)
-
9
Excel VBA:フォーム←→セルのアクティブ切り替え
Excel(エクセル)
-
10
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
11
エクセルVBA フォーム上でOnkeyがうまく出来ない
Excel(エクセル)
-
12
ユーザーフォームでTextBox1にカーソルを移動したい
Excel(エクセル)
-
13
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
14
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
15
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
16
Excel VBA 複数のコマンドボタンをキーボードで操作できませんか?
Excel(エクセル)
-
17
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
18
MSFlexGrid
Visual Basic(VBA)
-
19
ユーザーフォームをショートカットで立ち上げる。
Access(アクセス)
-
20
エクセルVBAでUserFormを起動した時
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
【ExcelVBA】5万行以上のデー...
-
vbsでのwebフォームへの入力制限?
-
vba textboxへの入力について教...
-
複数のExcelファイルをマージす...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
改行文字「vbCrLf」とは
-
Vba Array関数について教えてく...
-
【ExcelVBA】値を変更しながら...
-
【マクロ】開いているブックの...
-
【VBA】値を変更しながら連続で...
-
VBAの「To」という語句について
-
算術演算子「¥」の意味について
-
以下のプログラムの実行結果は...
-
VB.net 文字列から日付型へ変更...
-
[Excel VBA]特定の条件で文字を...
-
VBA ユーザーフォーム ボタンク...
-
ワードの図形にマクロを登録で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでCOPYを繰り返すと、処理が...
-
複数のExcelファイルをマージす...
-
【ExcelVBA】5万行以上のデー...
-
vbsでのwebフォームへの入力制限?
-
vba textboxへの入力について教...
-
Vba セルの4辺について罫線が有...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
Vba Array関数について教えてく...
-
【ExcelVBA】値を変更しながら...
-
【マクロ】開いているブックの...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
VBA 入力箇所指定方法
-
[VB.net] ボタン(Flat)のEnable...
-
VBAでセルの書式を変えずに文字...
-
vb.net(vs2022)のtextboxのデザ...
-
Excelのマクロについて教えてく...
-
改行文字「vbCrLf」とは
おすすめ情報