題して。これは私を怒らせており、ウェブ上の他の場所への参照を見つけることができません.
通常、次を使用して非表示になっている VBA を含むワークブックがあります。
ThisWorkbook.Windows(1).Visible = False
ただし、ワークブックを閉じると、ウィンドウが表示され、マクロを有効にするようにユーザーに指示する「特別な」ワークシートが表示されるデフォルトの状態に戻す必要があります。これは、次のユーザーがマクロを無効にしてブックを開いた場合のガイダンスを提供するためのものです。マクロを有効にしてワークブックを開くと、Workbook_Open イベントによってこのメッセージが再び非表示になり、その時点で通常の操作が続行されます。
私の問題は.Windows().Visible
、ワークブックの _BeforeClose イベント (Excel が終了するときにのみ発生する) からプロパティを変更すると、ワークブックが単に画面に残ることです。.Windows().Visible
この動作を引き起こしているプロパティを確実に設定していることを確認しました。
ThisWorkbook.IsAddin
これはユーザーのビューからワークブックを「非表示」にするのと同じ効果があるため、プロパティを使用してみましたが、まったく同じ動作が発生します。
また、マクロを無効にしてワークブックを開くとプロパティが無視されることを期待して、ウィンドウの可視性をまったく変更しないようにしましたが、そうではありません。
目的の動作を引き起こすために私ができる唯一のことはThisWorkbook.Close
、_BeforeClose イベント自体の最後の行として持つことですが、これにより不安定性が発生し、時折「Excel が予期せず終了しました。回復/再起動しますか?」というメッセージが表示されます。Excel が終了した後のメッセージ。
どんなヘルプ/ポインタもありがたく受け入れました。新しいバージョンの Excel にアクセスできません。
私のコード:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ScreenUpdating = False
Call cleanUp
Application.ScreenUpdating = True
End Sub
と
Private Sub cleanUp()
Dim s As Worksheet
shtZNM.Visible = xlSheetVisible
For Each s In ThisWorkbook.Sheets
If Not s Is shtZNM Then s.Visible = xlSheetHidden
Next s
With ThisWorkbook.Windows(1)
.DisplayWorkbookTabs = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.Visible = True '<==REMOVING THIS ALLOWS _BEFORECLOSE TO WORK AS EXPECTED
End With
On Error Resume Next
Application.CommandBars("QCS").Delete
Err.Clear
Application.CommandBars("Worksheet Menu Bar").Controls("QCS").Delete
Me.Save
End Sub