ユーザーフォームを表示した時に、ワークシートにフォーカスを移動する

前回に続き、小ネタの紹介です。

Excelでユーザーフォームを表示しながらシートにデータを入力する時に、少~し便利になる方法を紹介します。

下図の様な、担当者と作業内容を入力するシートを用意したとします。

入力シートと2つのユーザーフォーム

担当者の名前作業内容を入力するのを便利にするために、ユーザーフォームを表示する様にしました。

マクロでは、この入力シートがアクティブになった時にユーザーフォームを表示(show)しています。

通常は、ユーザーフォームが表示されると、フォーカスがユーザーフォームに移動してしまい、シートにデータをすぐに入力できません。

もちろん、ユーザーフォームは、ShowModal プロパティを False にしてあります。

いったん、シートをマウスでクリックすることでシートへの入力は出来るようになりますが…

ここで、小ネタです

マクロに2行追加するだけで、ユーザーフォームが表示された時点で、シートにフォーカスを移すことができます。

1)フォーカスを強制的にセットする関数(通常は標準モジュールの先頭に記述します。)

Public Declare Function SetFocus Lib “user32” (ByVal hwnd As Long) As Long

2)ユーザーフォームを表示した後など、フォーカスをアクティブシートに移動させるところで記述します。

SetFocus Application.hwnd

この、2行だけでユーザーフォームを利用しているシートを入力する際に、少~し便利になるのではないかと思います。

コメントの受付は終了しました。