前回に続き、小ネタの紹介です。
Excelでユーザーフォームを表示しながらシートにデータを入力する時に、少~し便利になる方法を紹介します。
下図の様な、担当者と作業内容を入力するシートを用意したとします。
担当者の名前と作業内容を入力するのを便利にするために、ユーザーフォームを表示する様にしました。
マクロでは、この入力シートがアクティブになった時にユーザーフォームを表示(show)しています。
通常は、ユーザーフォームが表示されると、フォーカスがユーザーフォームに移動してしまい、シートにデータをすぐに入力できません。
もちろん、ユーザーフォームは、ShowModal プロパティを False にしてあります。
いったん、シートをマウスでクリックすることでシートへの入力は出来るようになりますが…
ここで、小ネタです
マクロに2行追加するだけで、ユーザーフォームが表示された時点で、シートにフォーカスを移すことができます。
1)フォーカスを強制的にセットする関数(通常は標準モジュールの先頭に記述します。)
Public Declare Function SetFocus Lib “user32” (ByVal hwnd As Long) As Long
2)ユーザーフォームを表示した後など、フォーカスをアクティブシートに移動させるところで記述します。
SetFocus Application.hwnd
この、2行だけでユーザーフォームを利用しているシートを入力する際に、少~し便利になるのではないかと思います。