Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


53466 / 76737 ←次へ | 前へ→

【28085】Re:「呼び出し先は消失し、利用できません。...
発言  Hirofumi  - 05/8/28(日) 13:25 -

引用なし
パスワード
   レス付かないのでもう見て居ないかな?
やった事が無いので、少し試して見ました
多分こんな事だろう程度で申し訳有りませんが、
気が付いた事が有りましたので書いて置きます

  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
0 hits

【28027】「呼び出し先は消失し、利用できません。... わさび 05/8/26(金) 19:46 質問
【28085】Re:「呼び出し先は消失し、利用できません... Hirofumi 05/8/28(日) 13:25 発言
【28098】Re:「呼び出し先は消失し、利用できません... Hirofumi 05/8/28(日) 17:58 回答
【28108】Re:「呼び出し先は消失し、利用できません... わさび 05/8/29(月) 10:38 お礼
【28135】Re:「呼び出し先は消失し、利用できません... Hirofumi 05/8/29(月) 19:25 回答
【28136】Re:「呼び出し先は消失し、利用できません... わさび 05/8/29(月) 19:30 お礼

53466 / 76737 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free