| 
    
     |  | レス付かないのでもう見て居ないかな? やった事が無いので、少し試して見ました
 多分こんな事だろう程度で申し訳有りませんが、
 気が付いた事が有りましたので書いて置きます
 
 Set MY_window = A_window
 
 は、A_windowがLoadされ、Object変数MY_windowに参照が代入されます
 其処で、自身以外の場合は善いのですが、「UserForm_QueryClose」で
 「CloseMode = vbFormControlMenu」の時、自身の参照をMY_windowに代入しても
 其の後、自身がUnloadされるのでMY_windowが不定?に成るので起こると思われます
 因って、「CloseMode = vbFormControlMenu」の時は、
 「UserForm_QueryClose」をキャンセルし、自分自身をHideにすれば善いと思われます
 以下に、修正して見たたコードを載せます
 
 '<ThisBook>----------
 
 Option Explicit
 
 Private Sub Workbook_BeforeClose(Cancel As Boolean)
 
 Dim i As Long
 
 With UserForms
 For i = 0 To UserForms.Count - 1
 'コレクションから削除されるので、
 '繰り上がりの為常に.Item(0)
 Unload .Item(0)
 Next i
 End With
 
 Set MY_window = Nothing
 
 End Sub
 
 Private Sub Workbook_Open()
 
 SCkey
 
 Set MY_window = A_window
 
 End Sub
 
 '<フォーム:A_window>----------
 
 Option Explicit
 
 Private Sub B_dush_Click()
 
 Set MY_window = B_window
 Unload Me
 
 End Sub
 
 Private Sub C_dush_Click()
 
 Set MY_window = C_window
 Unload Me
 
 End Sub
 
 Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
 
 If CloseMode = vbFormControlMenu Then
 Set MY_window = Me
 Cancel = True
 Me.Hide
 End If
 
 End Sub
 
 '<フォーム:B_window>----------
 
 Option Explicit
 
 Private Sub A_project_Click()
 
 Set MY_window = A_window
 Unload Me
 
 End Sub
 
 Private Sub C_projecr_Click()
 
 Set MY_window = C_window
 Unload Me
 
 End Sub
 
 Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
 
 If CloseMode = vbFormControlMenu Then
 Set MY_window = Me
 Cancel = True
 Me.Hide
 End If
 
 End Sub
 
 '<フォーム:C_window>----------
 
 Option Explicit
 
 Private Sub A_cat_Click()
 
 Set MY_window = A_window
 Unload Me
 
 End Sub
 
 Private Sub B_cat_Click()
 
 Set MY_window = B_window
 Unload Me
 
 End Sub
 
 Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
 
 If CloseMode = vbFormControlMenu Then
 Set MY_window = Me
 Cancel = True
 Me.Hide
 End If
 
 End Sub
 
 '<標準モジュール>----------
 
 Option Explicit
 
 Public MY_window As Object
 
 Sub SCkey()
 
 Application.OnKey "%^{F12}", "MYshow"
 
 End Sub
 
 Sub MYshow()
 
 MY_window.Show
 
 End Sub
 
 |  |