ユーザーフォーム入門テンキーのスクリーンキーボード作成
テンキーのスクリーンキーボードを作製しました。普通はあまり必要性ないと思いますが…個人的に、あるExcelファイルを使うときに、テンキーがあったらよいなーと思ったので作ってみました。ということで、特定ファイルのみで使う目的で作製したものなので、汎用性のある便利なものということではあのません。
'対応するコントロールを設定するプロパティ Public Property Set Button(ByVal aButton As MSForms.CommandButton) Set pButton = aButton pButton.Tag = pButton.BackColor Set pForm = aButton.Parent Set pLabel = pForm.Controls("lblNum") End Property
'WithEventsのClickイベントプロシージャー Private Sub pButton_Click() Select Case pButton.Caption Case "C" pLabel.Caption = "" Case "↓" ActiveCell = pLabel.Caption Unload pForm Case Else pLabel.Caption = pLabel.Caption & pButton.Caption End Select End Sub
'WithEventsのMouseMoveイベントプロシージャー Private Sub pButton_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If pButton.BackColor = vbYellow Then Exit Sub Dim ctl As Control For Each ctl In pForm.Controls If IsNumeric(ctl.Tag) Then ctl.BackColor = ctl.Tag Next pButton.BackColor = vbYellow End Sub
MouseMoveイベントでは、マウスオーバーでボタンを黄色に変更しています。 この黄色はハードコーディングしているので、適宜対応が必要になります。 元々の色を、コントロールを設定するSet ButtonでTagプロパティに入れておくことで対応しているので、元の色が何色でも対応可能としています。
「ESC」キーでフォームを閉じるようにしています。 KeyDownで使うKeycodeの一覧は以下を参照してください。 ユーザーフォームのVBAコード 'イベント補足クラスのコレクション Private colEvent As New Collection '初期処理 Private Sub UserForm_Initialize() Me.lblNum.Caption = "" Call SetControlEvent("btn*") End Sub フォーム内の全コントロールから、「btn*」という名前のコントロールをイベント処理クラスに設定しています。 起動方法と起動VBAコード 標準モジュール Sub show10key() frm10key.Show vbModeless End Sub ThisWorkbook Private Sub Workbook_Open() Application.OnKey "", "show10key" End Sub ブックを開いた際に、「F1」キーにマクロ起動を割り当てます。 それには、WorkbookのOpenイベント内でOnKeyメソッドを使います。 第124回.Workbookのイベントプロシージャー|VBA入門・Workbookのイベント一覧 ・イベントプロシージャー追加のVBE操作 ・Workbook_Open:Workbookのイベント ・Workbook_BeforeClose:Workbookのイベント ・Workbook_SheetChange:Workbookのイベント
第128回.マクロをショートカットで起動(OnKeyメソッド)|VBA入門 同じテーマ「ユーザーフォーム入門」の記事 新着記事 NEW ・・・新着記事一覧を見る アクセスランキング ・・・ ランキング一覧を見る このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。 掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。 本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。 This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.