Excel VBA:ユーザーフォームを開いた後、シートにフォーカスを移す

Windows APIのSetFocusでフォーカスを移動するVBAを掲載しています。




Homeに戻る > Excel フォームのTipsへ

例えば、ユーザーフォームに説明のみを記入している場合、ユーザーフォームを開いた後シートにフォーカスを移したい場合があります。

それをVBAで行う方法を掲載しています。

ここでは、Windows API の SetFocus を使いフォーカスを移します。

ユーザーフォームは、vbModeless(モードレス)で開きます。



作成したExcel実行画面

■ 「科目名一覧」ボタンをクリックすると、科目名一覧のユーザーフォームを開きその後、ボタンにフォーカスを戻しています。

ユーザーフォームを開いたシート

Excel VBA実行コード

VBAの解説

  • 念の為、Option Explicitを宣言しています。
  • Windows API の SetFocusを宣言しています。
  • コマンドボタンのクリックイベントで実行しています。
  • Showメソッドでユーザーフォームを開きます。
    その場合、vbModelessでモードレスにします。
  • モードレスにすると、他のウィンドウに操作を移すことができます。
  • 引数をApplication.hwndに指定し、SetFocusを実行します。
    Application.hwndを指定すると、ユーザーフォームを開いたExcelウィンドウにフォーカスが戻ります。

VBAコード

Option Explicit

Private Declare Function SetFocus Lib "user32" (ByVal hwnd As Long) As Long

Private Sub CommandButton1_Click()
    
    'ユーザーフォームを開く
    UserForm1.Show vbModeless
    'シートにフォーカスを移す
    SetFocus Application.hwnd

End Sub



Homeに戻る > Excel フォームのTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved