テキストボックスにデータ入力後エンターキーの押下でイベントに入りたいのですが、下記のコーディングで[通過]メッセージが表示されません。英数字は通過しますが、エンターキーは動作停止します。
これと全く同じコーディングで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
No.4ベストアンサー
- 回答日時:
こんにちは。
>ご指摘のオブジェクトとプロシージャは間違いないことを確認しています。(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
Wendy02様 このたびは私のトラブルに関わっていただき、多大なご迷惑をおかけしました。ありがとうございます。4回目に書いていただいたコードできちんと正しい動きをします。重ねて心から感謝申し上げます。さて、これだけご親切にお教えいただいておきながらまことに無礼なことを申し上げますが、私の確認のお願いに大変ご立腹のご様子。とまどっております。私の疑問はなぜ4回もやりとりしなければ
KeyPressではなく、KeyDownだと教えていただけないのか不思議だということです。しかも最初の投稿でこの話はVBAだと断ってあります。
お教えいただいたKeyPressの件はその1回目でおわかりのはずではないですか。1回目~3回目はずいぶん横道にそれています。いきなり4回目で「だからKeyDownイベントを使えばよいとしている」(原文のまま)は教えを乞う立場の私でもおかしな話だと思います。Wendy02様は相当優秀かつ有能な方だとお見受けいたします。今後、素人には丁寧にお教えくださいますように。ご無礼をお許しください。
No.3
- 回答日時:
こんにちは。
>私の期待とは異なり、そもそも1200 + EnterでIf文まで来ません。
それは、もしかしたら……。
私は、VB6 からの話でしたので、UserForm 上でと思いましたが、それはどちらでもよいのですが、この種のコントロールを作る場合に、
そのコントロールを作ったら、編集可能な状態のときに、それをダブルクリックしてください。そうすると、該当するVBEditor に飛びます。
通常、TextBox ですと、TextBox1_Click イベントが作られるわけです。
そこで、
VBEditor の画面の上の方には、二つのコンボボックスがあって、
左側には、 右側には、
--------------------------------------
TextBox1 ▼ |Click ▼
--------------------------------------
オブジェクト名があり、と出ていて、始めて、イベント・ドリブン型マクロと成立するわけです。その▼で、イベントの種類を変えてあげるわけです。
それは、この私も、Classに書いた後に、動かないので確認すると、そういうオブジェクト名自体が間違えていることがあります。オブジェクト名が左側に出ていれば、VBEditor は、そのオブジェクトを認識しています。
Wendy02様 重ね重ねご丁寧にありがとうございます。VBAもロクに承知しないで恥ずかしい限りです。ただ、ご指摘のオブジェクトとプロシージャは間違いないことを確認しています。(TextBox1,keyPress)コードのロジックはこれ以上簡単に書きようがないほど単純明快です。ご面倒を承知でお願いしますが、Excelで実際にこのコードを実行していただけませんか。もしWendy02様が正しく”通過”メッセージが表示されれば私のExcelバーションやマシン環境から疑ってかからなくてはなりません。なにとぞ、よろしくお願いいたします。
No.2
- 回答日時:
こんにちは。
>データ入力後エンターキーの押下でイベントに入りたいのです
イベントが何を意味するのかは分かりませんが、こういうことをお聞きになっているのでしょうか?
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then
'別のタスクを書く
'KeyCode = 0 としなければ、Enter キーは生きています。
End If
End Sub
再度ありがとうございます。おっしゃる通り、If文でThenに来るときは
Textbox1に(例えば1200 + Enter)データが入って来ることになります。ここでこの値を使っていろいろな処理をします。しかし、私の期待とは異なり、そもそも1200 + EnterでIf文まで来ません。(Msgbox "通過"はその通過確認の意味です。)なので、私が期待している回答は1行目にどこか誤りがあるのか、Objectや Projectが間違っている、またはコードを記入する場所が違う(標準モジュール?)ということになるような気がします。(このあたりがよく分かっていません)。どうか見捨てないでよろしくお願いいたします。
No.1
- 回答日時:
こんにちは。
今、VB6は、別のPCに入れてあるので、立ち上げるのが面倒だから試してみてないけれど、それは、KeyCode ではないのでしょうか?
ただし、以下のコードでは、文字を入れようが、Enter キーを入れようが、「通過」のメッセージは出てきますね。このコード自体の意味は、Enterキーの働きを無効にするという意味だと思います。
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
MsgBox "通過"
If KeyCode = vbKeyReturn Then
KeyCode = 0
End If
End Sub
早々のご回答ありがとうございます。まるでおんぶにだっこのおねだりみたいで気が引けますが、もしお時間があるなら私の目的から見てどこをどうすればよいのか具体的にお教えいただければ本当にありがたいです。どうかよろしくお願いいたします。なお、VBとVBAの違いを承知していません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Excel(エクセル) エクセルのイベントVBAを複数のシートで動かしたい 1 2022/12/07 16:55
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Excel(エクセル) エクセルのイベントプロシージャーでF列の最終行のセルの入力をトリガーにしたいのですが 1 2022/10/14 09:36
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
このQ&Aを見た人はこんなQ&Aも見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
スマホに会話を聞かれているな!?と思ったことありますか?
スマートフォンで検索はしてないのに、友達と話していた製品の広告が直後に出てきたりすることってありませんか? こんな感じでスマホに会話を聞かれているかも!?と思ったエピソードってありますか?
-
2024年に成し遂げたこと
今年も残すところわずか。 皆さんが今年達成したことを教えていただきたいです。 どんな小さなものでも構いません。
-
集合写真、どこに映る?
あなたが集合写真を撮られるとき、画角のどのあたりにいることが多いですか? 私は振り返ってみると右の端にいることが多い気がします。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
テキストボックス(VBA)でEnterを押したときに作動するマクロ
Access(アクセス)
-
Enterキーでマクロを起動さす。
その他(ソフトウェア)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
-
4
Excel VBA あるセルでENTERを押すと特定のセルへ移動したい
Excel(エクセル)
-
5
エクセルのVBA 特定のセルでエンターキーでマクロ実行
Excel(エクセル)
-
6
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
7
エクセルVBA テキストボックスへのセットフォーカスについて
Visual Basic(VBA)
-
8
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
9
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
10
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
11
ユーザーフォームでTextBox1にカーソルを移動したい
Excel(エクセル)
-
12
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
13
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
14
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
15
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
16
コマンドボタンのEnterイベント後に、フォーカスを移動したい。
その他(Microsoft Office)
-
17
UserForm1.Showでエラーになります。
工学
-
18
テキストボックスのvalueとtextの違い
Visual Basic(VBA)
-
19
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
20
ユーザーフォームのSetFocusが働かない?
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
Excel VBAでマウスの左クリック...
-
アクセスのテーブルを隠す?
-
アクセスVBAのMe!と[ ]
-
【エクセル】複数のTextBoxに共...
-
PictureBoxにPSetしてそれをIma...
-
【エクセルのマクロ】クリップ...
-
PowerpointVBAで指定のShapeオ...
-
文字列で小数点以下の0を削除し...
-
「PC Helpsoft Driver Updated...
-
エクセルで、日付を入力すると...
-
VBAでセルに値が入力されるまで...
-
エクセルVBAで、MsgBox やInput...
-
NoxPlayerとUWSCのadbの座標に...
-
エクセルでグループボックスを...
-
「ご処理進めて頂きますようお...
-
メインフォームからサブフォー...
-
お家デートをしててハグを長い...
-
セックスレスの既婚女性は自慰...
-
VBAでループ内で使う変数名を可...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
Excel VBAでマウスの左クリック...
-
日本語の文字化けを直す方法
-
【エクセルのマクロ】クリップ...
-
Accessのフォーム上にエクセル...
-
文字列で小数点以下の0を削除し...
-
エクセルVBAでセル番地を指定し...
-
【エクセル】複数のTextBoxに共...
-
Excel2007 でのチェックボック...
-
現在アクティブになっているオ...
-
[C#] DataGridViewの項目名
-
コードでオブジェクトを最前面に
-
ExcelのシートをAccessで表示し...
-
PowerpointVBAで指定のShapeオ...
-
ユーザーフォームのインポート...
-
VBAで選択範囲外の図形(オブジ...
-
ディスクの総セクタサイズを取...
-
Access からオブジェクトとして...
-
Imageコントロールにグラフを表...
おすすめ情報