[三流君] −−> [VBAで楽しく] −−> [バックナンバー一覧]
−−> No.030 Excel UserForm テキストボックスのイベント

Excel UserForm テキストボックスのイベント

メルマガ発行内容

<Excel UserForm テキストボックスのイベント>

こんにちは、三流プログラマーKen3です。 今回は、 Excelユーザーフォーム の テキストボックス関係のイベントを少し書きます。 別の機会でフォームの作り方はやるつもりなので、 気楽に読んでください。 /* * 1. 質問来た、今度はカッコつけたいけど、、、、 */ BBS に以下の投稿がありました。 >投稿時間:2002/12/18(Wed) 23:50 > >おなまえ:fox1972 >タイトル:エクセルVBAでのキー操作 >URL : >コメント: > >エクセルにてユーザーフォームを表示しています。 >ファンクションキーを利用してある処理をさせたいのですが、 >何か良い方法はないでしょうか? > >また、フォームを表示したときに、あるテキストボックスに >フォーカスを移動させたいのですが、上手くいきません。 >(どこがアクティブになっているのかも解らない。カーソルも表示されない。) >今は「UserForm_Initialize」にて「テキストボックス名.SetFocus」と記述しています。 >-------------------------------------------------------- ---- 最近、ポツポツと質問来てるので、ネタには困らないなぁ と思いつつ、質問内容と自分の経験を照らし合わせて考える。 /* * 2.先に、テキストボックスを目立たせてみる */ >また、フォームを表示したときに、あるテキストボックスに >フォーカスを移動させたいのですが、上手くいきません。 >(どこがアクティブになっているのかも解らない。カーソルも表示されない。) >今は「UserForm_Initialize」にて「テキストボックス名.SetFocus」と記述しています。 どこがアクティブだか、わからない。。。 ユーザーフォーム作成後、 テキストボックスを2つ作って、私も試してみました。 たしかに、、、わかりにくい。 サンプルを、 http://www.ken3.org/vba/lzh/vba030.lzh のtest030-book.xls内にテストのフォーム作りました。 解説と合わせて見て下さい。 一つの案として、現在入力中のテキストボックスのバックカラーを変えてみます。 テキストボックスのイベントで、 _Enterが入ってきた時の処理、 _Exitが出て行く時発生するイベントなので、 テキストボックスに入力が移ったら、 .BackColor = RGB(&H0, &HFF, &HFF) で水色に変えて、 出て行く時は、 .BackColor = RGB(&HFF, &HFF, &HFF) 元に戻してます。 Private Sub TextBox1_Enter() 'テキストボックスに入ったら色変える TextBox1.BackColor = RGB(&H0, &HFF, &HFF) End Sub Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'テキストボックスからバイバイする時は元に戻す TextBox1.BackColor = RGB(&HFF, &HFF, &HFF) End Sub Private Sub TextBox2_Enter() 'テキストボックスに入ったら色変える TextBox2.BackColor = RGB(&H0, &HFF, &HFF) End Sub Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'テキストボックスからバイバイする時は元に戻す TextBox2.BackColor = RGB(&HFF, &HFF, &HFF) End Sub 三流君さ、うっ、なんか頭イタクなってきたよオレ。 何で?動いてるよ。 じゃなくって、 10個入力項目あったら、全部いれるのこれ? なんかバカ臭くない? ギク、、、 コントロールって配列にして処理できるか、調べないとなぁ。 確かに、2つ3つだったらいいけど(2つ3つまでかなガマンできるの) テキストの数が多いとマズイなぁ。 一つの案として、イベントで背景色を変えて、入力エリアをわかりやすくしました。 その先のプログラムもわかりやすくする方法は、現在探ってます(大丈夫??) /* * 3.ファンクションキーを取る */ ファンクションキーを取る、 これはAccessでやったことあったので、 参考例を。 KeyDownのイベントで取れるので、 Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If vbKeyF1 <= KeyCode And KeyCode < vbKeyF12 Then MsgBox "F" & (KeyCode - vbKeyF1 + 1) & "が押されました" End If End Sub でテストできます。 キー コードの定数(ヘルプより) 定数 値 内容 vbKeyF1 0x70 F1 キー vbKeyF2 0x71 F2 キー vbKeyF3 0x72 F3 キー vbKeyF4 0x73 F4 キー vbKeyF5 0x74 F5 キー vbKeyF6 0x75 F6 キー vbKeyF7 0x76 F7 キー vbKeyF8 0x77 F8 キー vbKeyF9 0x78 F9 キー vbKeyF10 0x79 F10 キー vbKeyF11 0x7A F11 キー vbKeyF12 0x7B F12 キー vbKeyF13 0x7C F13 キー vbKeyF14 0x7D F14 キー vbKeyF15 0x7E F15 キー vbKeyF16 0x7F F16 キー 共通の関数作ってみたけど ^^^^^^^^^^^^^^^^^^^^^^^^ Private Sub chkFKey(ByVal KeyCode As MSForms.ReturnInteger) If vbKeyF1 <= KeyCode And KeyCode < vbKeyF12 Then Select Case KeyCode Case vbKeyF1: '終了処理 'さて、フォームでもとじますか。 Unload Me '自分を落す Case vbKeyF4: 'F4 MsgBox "こんな感じでF4処理を書く" Case Else: MsgBox "F" & (KeyCode - vbKeyF1 + 1) & "が押されました" End Select End If End Sub Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Call chkFKey(KeyCode) 'チェック用の関数を呼ぶ End Sub Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Call chkFKey(KeyCode) 'チェック用の関数を呼ぶ End Sub と、各テキストボックスの _KeyDown イベントで共通の関数を呼び、 F1が押されたらフォームを閉じる(通常F1はヘルプだけど) F4はテストメッセージ、 その他のキーは、押されたキーを表示してます。 えっ、これも、テキストボックスの数入れないといけないの? あとさ、バックカラーはいいとして、 チェックボックスとかリストボックスにフォーカスあたってた時に、 F1押しても反応しないんじゃない? たしか、フォーム全体に効かす、、って言うか、 フォームの_KeyDown イベントに書いたら? う〜ん、これも改善の余地有りですね。 /* * 4.終わりの挨拶 */ 今回は、 ・Excelユーザーフォームのテキストボックスを見やすくする案 ・ファンクションキーを判断したい でした。 今回のサンプルは、 http://www.ken3.org/vba/lzh/vba030.lzh に test030-book.xlsが保存されていて、 テストフォームを2種類作ってます バックカラーを変えたり、ファンクションを押してみたり、 遊んでください。 拾い読みして、 1つでも何かの参考となれば幸いです。 Excel/Access大好き、三流プログラマーKen3でした。

フィードバック

VBA系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.030を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

ページフッター(リンクや広告など)


[三流君(TOP ken3.org へ戻る)]
-- [VBA系TOPへ]
---- [VBA系バックナンバー目次へ移動]
------ [VBAでIEを操作 CreateObject("InternetExplorer.application")]・・・実は当店一番人気、VBAでIEを操作するサンプルです
------ [VBAでOutlookの操作 CreateObject("Outlook.Application")]・・・Outlookを使い、メール関係の処理です
------ [Access から Excel 連携 CreateObject("Excel.Application")]・・・人気のAccessからExcelへデータ書き出しなどです
------ [AccessのUserForm/サブフォームを操作]・・・アクセスでフォームを使ったサンプルです
------ [Accessのレポートを操作]・・・レポートを操作してみました
------ [Access クエリー関係やその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です
------ [Excel UserForm(ユーザーフォーム)を操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
------ [ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
------ [Excel関係 関数、その他]・・・その他Excel関係です
------ [VBAでテキストファイル(*.txt,*.html,*.csv)の操作]・・・テキストファイルを使ったサンプルです
------ [VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます


広告
-- [通販系の売れ筋広告へ] ←主に楽天やAmazonのランキングです
blog
-- [三流君の作業日記] ← 日々の作業を少々
-- [通販あしあと] ← 通販ページの足跡を一覧で羅列

情報を探す

情報を探すならGoogleかな?

↓Web全体、サポート情報(support.microsoft.com)や三流君VBA(ken3.org)から検索する
Google
Web www.ken3.org
www.microsoft.com support.microsoft.com

あとは、項目別にMSでお勉強かな?
◆ マイクロソフト サイトの歩き方
◇ How-To インデックス
◇ FAQ インデックス
◇ スキルレベル別おすすめコンテンツ
◇ テクノロジ マップ
◇ テーマ別技術資料一覧

書籍の購入

Webだけじゃさすがに勉強しきれないので、プログラミング関係の書籍も読んでみては??

コンピュータ書籍の発送がハヤイ専門店

コンピュータの本・専門店
種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。
お奨め本の目次を見るだけでも勉強になったり

amazon.co.jpでキーワード別チェック

下記、私が設定したキーワードですが、こんな感じで資料や書籍を探ってみては?
[VBA全体を把握する] -- やはり全体をさらっと見たいですよね。
[SQL関連でDB力UP] -- システムはデータベース設計が重要
[ADO接続を探る] -- VBAなのでADO接続を押さえておく
[Windows APIを探る] -- さらにAPIになて知ってれば強力だ!
[.NETを探る] -- と言っても時代は.NETに流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・