![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
いつもお世話になっています。
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Excel(エクセル) エクセルのイベントプロシージャーでF列の最終行のセルの入力をトリガーにしたいのですが 1 2022/10/14 09:36
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBAについて教えてください 4 2022/11/10 12:44
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
このQ&Aを見た人はこんなQ&Aも見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
KEYPREVIEW=TRUEについて。意味が分かりません・・。
Visual Basic(VBA)
-
エクセルVBA フォーム上でOnkeyがうまく出来ない
Excel(エクセル)
-
Excelマクロ、フォーム入力での矢印移動禁止
Excel(エクセル)
-
-
4
コンボボックスにキー入力をさせない方法(ACCESS VBA)
その他(プログラミング・Web制作)
-
5
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
6
変数をコントロール型で使用する方法
Visual Basic(VBA)
-
7
Access VBA Me.Requery レコードは削除されています エラー
その他(データベース)
-
8
VB.NET2005 TextBox 高さ(Height) 変更
Visual Basic(VBA)
-
9
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
10
Excel VBA ListViewサブアイテムの文字色
その他(プログラミング・Web制作)
-
11
メッセージボックスの選択ボタンのテキストを変更したい
Visual Basic(VBA)
-
12
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
13
矢印(左右)キーでイベントを発生させたい。
Visual Basic(VBA)
-
14
コマンドボタンがあるかどうかを取得するには?
PowerPoint(パワーポイント)
-
15
ユーザーフォームをショートカットで立ち上げる。
Access(アクセス)
-
16
エクセルVBAでフォームのListboxをスクロールするには?
その他(Microsoft Office)
-
17
スクロールバーをVBAで操作したい
Access(アクセス)
-
18
Accessを使って日付を比較したい
その他(Microsoft Office)
-
19
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
20
vba ListViewの選択色について教えてください
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カメラスクロールするのを動画...
-
C#で角が丸いテキストボックス
-
vb.netで画面のコントロールId...
-
コントロールを移動できない
-
'ckbl' コントロールは作成され...
-
エクセル・VBA CheckBoxのオブ...
-
エクセルVBAでオプションボタン...
-
VBAのフォームでTextBoxがいっ...
-
間違えて配置してしまったコン...
-
vb.net メニューをダブルクリッ...
-
Excel-VBAでタイマー処理
-
chr関数の呼び出しで「プロ...
-
excelのリストボックスで選択し...
-
VBAのエラーについて、”実行時...
-
USB I/Oのデジタル信号をvbaで...
-
フォーカスの枠線を太くしたい
-
DataGridView、1セルに複数コ...
-
ExcelVBAでListViewが使用できない
-
C#で自分のウインド・ハンド...
-
Excel VBA 動的に作成したチェ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル・VBA CheckBoxのオブ...
-
カメラスクロールするのを動画...
-
vb.netで画面のコントロールId...
-
C#,vb.netで業務用アプリ開発と...
-
EXCELでactivexコントロールを...
-
フォーム上の現在アクティブな...
-
ExcelVBAでListViewが使用できない
-
コンボボックスの文字によるif...
-
C#で角が丸いテキストボックス
-
エクセルVBAでオプションボタン...
-
ユーザーフォームで動的(Me.Con...
-
VBAのフォームでTextBoxがいっ...
-
アクセス特有の書き方?
-
エクセル コントロールツール...
-
間違えて配置してしまったコン...
-
変数をコントロール型で使用す...
-
(VBA)スピンボタンの大量...
-
Labelコントロールの(左右)余...
-
excelのリストボックスで選択し...
-
Excel VBA で Richtextboxを使...
おすすめ情報