• ベストアンサー

VBでキーボード入力をフォーム上で対応させるには

Microsoft VisualBasic6.5でプログラミングしています。 キーボード入力を確認するツールを作成しようと思っています。 UserForm上に、CommandButtonを2個配置して それぞれに 数字の 1と2を設定。 キーボードの1と2を押すと、CommandButtunが マウスで押されたときのように表示する方法が わかりません。 プログラム初心者です。 よろしくお願いいたします。

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

  • ベストアンサー
  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.4

よく読みかえしてみたらVB6.5って VBAのものですね。 (userform commandbutton )と書いてありましたね。 ふつうはこんな使い方をしないと思いますが 参考にしてください。 Private Sub UserForm_Initialize() CommandButton1.Enabled = False CommandButton2.Enabled = False CommandButton1.BackColor = &H0 CommandButton2.BackColor = &H0 End Sub Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) CommandButton1.Caption = "" CommandButton2.Caption = ""   If KeyAscii = 49 Then CommandButton1.BackColor = &HFF0000 CommandButton2.BackColor = &HFF CommandButton1.Caption = 1   End If If KeyAscii = 50 Then CommandButton1.BackColor = &HFF CommandButton2.BackColor = &HFF0000 CommandButton2.Caption = 2 End If End Sub

John_Rambo
質問者

お礼

DreamyCatさん ソースの提示ありがとうございます。 早速動作確認しましたところ、こちらの希望通りの 動作を確認できました。 これをベースに完成させたいと思います。 本当にありがとうございました。 ※ また作成途中に疑問点等が出てくると思いますが  その際はまた質問させていただきたいと思います。  よろしくお願いいたします。

その他の回答 (3)

回答No.3

>UserForm上に、CommandButtonを2個配置して >それぞれに 数字の 1と2を設定。 >キーボードの1と2を押すと、CommandButtunが >マウスで押されたときのように表示する方法が >わかりません。 数字キーの 1 だけでは、そのようにはできません。 Alt + 1 を押すならば、上記のように設定はできます。 その場合、CommandButton のキャプションには、 &1 と &2 の ように設定して下さい。 実行するとボタンの表面の 1 にアンダーラインが表示していれば Alt キー と 1 キー を同時に押すと、CommandButton1 をクリック した場合と同じになります。

John_Rambo
質問者

お礼

ご回答ありがとうございます。 どうしても1つのキーを押すアクションで希望の動作が できないか、質問させていただきました。 別の方からの回答で希望の動作を確認できました。 ありがとうございました。

noname#187541
noname#187541
回答No.2

こんにちは。 VB6は持っていませんので参考程度に。 フォームでキーイベントを受け取れるようにして、このイベントで処理をする、というのはどうですか? フォームでもキーイベントを受け取るようにする http://jeanne.wankuma.com/tips/vb6/form/keypreview.html

John_Rambo
質問者

お礼

ありがとうございます。 こちらに記載されているものを使ってみましたが やはりうまく動きません。 大変恐縮ですが、そのものズバリのソースがあれば 教えていただきたいと思います。

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

keydown keypress keyupなどのイベントプロシージャの中から どれか適切なものを選べばkeycodeかkeyascで取得できるはずだったと思います。 (もう10年近く触っていないので・・・)

John_Rambo
質問者

お礼

早々にご回答ありがとうございます。 いろいろネット上で調べ、教えていただいたコマンドも 試してみましたがうまく反応しません。 (ボタンをマウスクリックしたときのように、ボタンがへこむ感じ) 簡単なサンプルを提示いただけると幸いです。

関連するQ&A

  • VisualBasic2005での入力フォームについて

    VisualBasic 2005 で販売管理ソフトを作りたいと考えているのですが いつも エンドユーザーに情報を入力してもらうフォーム(顧客情報や販売情報など) を作る時に挫折してしまいます。 ツールの使い方や配置などがうまくいきません。 (使いにくくなったり見にくくなったり分けがわからなくなったりします。 ユーザーフォーム作成の参考になるホームページや 書籍等教えていただけないでしょか? 2年近く悩んでいます是非よろしくお願いいたします。

  • キーボードからの入力をフレームに表示させたい

    JAVA超初心者で分からないので教えてください。 フレームを表示させてその中に文字を表示させるプログラムと、 コマンドプロンプトに数字を入力させて、コマンドプロンプト内に表示させるプログラムは分かるのですが、 コマンドプロンプトで数字を入力させて、それをフレームの中に表示させるプログラミングがわかりません。 だれか分かる方がいましたらぜひ教えてください!! よろしくお願い致します。

    • ベストアンサー
    • Java
  • EXCEL VBAのユーザーフォーム上のテキストボックスの入力方法について

    すいません教えていただきたいことがあります。 EXCEL VBAのユーザーフォームについて、 コマンドボタンにタグを設定して、これにキーボードと同じ機能を持たせて テキストボックス内に入力することは可能でしょうか。 例えばコマンドボタンを「あ」~「ん」まで作り、それぞれのボタンに「あ」~「ん」までのタグを設定する。 Private Sub UserForm_Initialize() CommandButton1.Tag = "あ" CommandButton2.Tag = "い" ・・・・「ん」までボタンを作成する。 次に、 Private Sub CommandButton1_Click() TextBox1.Value = TextBox1.Value & CommandButton1.Tag End Sub Private Sub CommandButton2_Click() TextBox1.Value = TextBox1.Value & CommandButton3.Tag End Sub ・・・「ん」まで作成する。 この設定では、コマンドボタンのクリックで文字の追加はできますが、ボタンを押すと常に文字が一番後ろに追加されるため、 テキストボックスをクリックしても文章の途中に文字を挿入することが出来ません。 通常のキーボードの入力と同じようにテキストボックス内でクリックした箇所からコマンドボタンで入力を開始するような設定は可能でしょうか。 よろしくお願いします。

  • キーボードで入力ができません

    赤外線のキーボードを使っているのですが、突然何も入力できなくなりました。  説明書を読んで色んな方法を試しました直りませんでした。  コントロールパネルでマウスとキーボードのハードウェアを見比べてみましたが、マウスのデバイス状態は正常に作動しています。と表示されるのですが、キーボードのデバイス名やデバイスの状態が何も表示されませんでいた。 どうすれば直るでしょうか パソコンにわあまり詳しくないので 初心者でもわかるような回答を御願い致します。

  • VB2008

    初心者です。よろしくお願いいたします。 現在、VB2008を使い、あるアプリケーションの作成に挑戦中です。 フォーム上にWebBrowserを配置しているのですが、このWebBrowserはVBのプログラム上でのみ操作したいのです。 つまり、キーボード操作、マウス操作を一切無効にするにはどのようにしたら良いでしょうか? フォーム自体にはButtonやtextboxが配置してあり、フォームの下半分にWebBrowserが配置してあります。 WebBrowserのみ操作禁止にしたいのです。 なにぶん、VBを始めてまだ日が浅いので、この操作が難しいのか簡単なのかもわかりません。 昨日から書籍やWEBでいろいろ探したのですが、これと言った内容は見つかりませんでした、よろしくお願いいたします。

  • キーボードからの入力

    キーボードの1を使い、1を押した回数を配列に入れるというCプログラムを考えています。 例えば、キーボードから1を5回押せば配列[0]に数字の5を、次に1を10回押せば配列[1]に10を、30回押せば30を・・・と言う形です。 押した回数をどう配列に入れればいいのか私には思いつきません。 思いついた方法と言えば、入力した数字を10で割るという方法です。 例えば、1を5回押せばその値は11111ですから、それを10で割り、割った回数に1を足せば配列に5を入れられます。(めんどくさいやり方かもしれませんが。。。) しかしその方法だと、キーボードから入力した値が10桁を越えると長整数の範囲を超えオーバーフローを起こしてしまいます。 どなたか良い方法をご存知であればよろしくお願いします。

  • VBについて質問です

    VB2010でフォームデザイナーに、ツールBOXからテキストBOXとボタンを挿入します。テキストBOX内に数字を入力し、ボタンクリックで線がかけるようなプログラムを作成したいのですが、初心者で分かりません。コード等詳しく教えていただけないでしょうか。

  • Windowsフォームアプリケーションを表示するには?

    Visual C++のコンソールアプリケーションで数字をキーボードから入力するプログラムを作成しました。このプログラムは実行するとコマンドプロンプトが開かれてキーボード値の入力待ち状態になるのですが、ここでコマンドプロンプトではなく、このプログラムとは別に作成したWindowsフォームアプリケーションが開かれキーボード値の入力待ち状態になるというプログラムを作成したいのですが、こういったことは可能でしょうか?また可能ならばどのようなやり方があるか教えていただきたいです。宜しくお願いします。

  • キーボードの入力がおかしい

    今日、突然キーボードとマウスが動かなくなってしまいました。 再起動して、何とか動くようになりましたが、入力が変です。 数字の4→3 バックスペース→右クリックをした時の表示が出ます。 r→w y→d 今はUSBでキーボードを使って質問しています。 システムの復元をしてみましたが、変わりませんでした。 どなたかわかる方いらっしゃいましたら教えてください。 毎日使うもので、困っています。 よろしくお願いします。

  • ユーザーフォームに入力したデーターが転記できない

    いつもお世話になります。 Windows7 excell2010 です。 いろんなものに勉強してここまでに作成したユーザーフォームですが、データーは入力できるのですがコマンドボタンをクリックしても各セルに反映されません。 色々と試行錯誤していますがうまくゆきません。 どこに不具合があるかわからず恐れ入りますがどなたかご指導いただけませんか。 参考にコードは参考に下記にします。 ユーザフォームのVBAは下記です コード ※Module1 Sub 売上() Do UserForm1.Show Loop End Sub Sub 入金() Do UserForm2.Show Loop End Sub ※UserForm1 Private Sub UserForm_Initialize() With ComboBox1 .AddItem "1" .AddItem "2" .AddItem "3" End With End Sub Private Sub CommandButton1_Click() n = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(n, 2) = UserForm1.TextBox1.Text Cells(n, 3) = UserForm1.TextBox2.Text Cells(n, 4) = UserForm1.TextBox3.Text Cells(n, 11) = UserForm1.ComboBox1.Text Unload Me End Sub Private Sub CommandButton2_Click() Unload Me End End Sub ※UserForm2 Private Sub CommandButton1_Click() n = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(n, 2) = UserForm2.TextBox1.Text Cells(n, 3) = UserForm2.TextBox2.Text Cells(n, 4) = UserForm2.TextBox3.Text Unload Me End Sub Private Sub CommandButton2_Click() Unload Me End End Sub

専門家に質問してみよう