5

現在、Excel インスタンスの上にユーザーフォームを開いていますが、ユーザーフォーム以外は操作できないように設定されています。このプログラムを最小化する方法がないため、ユーザーフォームに「最小化」ボタンを作成しました。これをクリックすると、ユーザーフォームが非表示になり、期待どおりに Excel ウィンドウが縮小されます。

ただし、最小化されたExcelアプリケーションをクリックしてウィンドウを復元すると、ユーザーフォームが再び表示され、Excelウィンドウが以前のようにその背後に表示されるようになります(現在はExcelウィンドウのみが表示されます)。

Excelインスタンスをクリックして復元したときに、ユーザーフォームを再度表示できるようにする機能またはトリガーはありますか? これは私が現在すべてを最小化している方法です:

Private Sub CommandButton15_Click()
Me.Hide
Application.WindowState = xlMinimized
End Sub
4

1 に答える 1

7

フォームを表示するときは、次のようなことをしている可能性があります。

UserForm.Show

このShowメソッドは、フォームを表示するModalModeless. モーダル表示がデフォルトであり、ワークシート/ワークブック オブジェクトとの対話は許可されません。代わりに、フォームを表示するときに次のようにします。

UserForm.Show vbModeless

これにより、ユーザーはワークシート/ワークブックを操作できるようになり、カスタム ボタンの必要性が軽減され、実行する必要がなくなりますMe.Hide。アプリケーションを最小化すると、ユーザー フォームが最小化されます。アプリケーションを最大化すると、ワークブックとユーザーフォームが再表示されます。

ユーザー フォームの表示を使用する必要がある場合vbModal(多くのアプリケーションでは、これはユーザーがワークブック/ワークシートを操作できないようにするための意図的な要件です)、私に知らせてください。最小化/最大化をより適切にトラップできるいくつかのイベントまたはアプリケーション イベントがある場合があります。

アップデート

または、次のようなこともできます。このアプローチは、Excel アプリケーションを非表示にし、ユーザー フォームのサイズを縮小してから、ユーザー フォームをクリックして戻るとサイズを変更し、Excel アプリケーションを再度表示します。

Private Sub CommandButton15_Click()
'Hide Excel and minimize the UserForm
    Application.Visible = False
    Me.Height = 10
    Me.Width = 10

End Sub

Private Sub UserForm_Click()
'Show Excel and resize the UserForm
    Application.Visible = True
    Me.Height = 180
    Me.Width = 240
End Sub

Private Sub UserForm_Terminate()
'Ensure that the Application is visible and the form resized
    UserForm_Click
End Sub
于 2013-08-16T14:48:20.597 に答える