| 
    
     |  | 訳のわからない投稿申し訳ありませんでした 
 この辺の処理、トラウマで、いつも、コードが動くように
 訳もわからず改変していって??になってしまいます
 
 基本に戻って、最初から動きを追いかけて下記わかりました
 ・シートモジュール等のクラスモジュールと標準モジュールでは、name等戻り値が違う
 ・色々試してみた結果、yoshiさんのコードのように、ウインドウ操作はWorkbook_Activate のみで行う
 ・複数ブック使用時で、新しいウインドウを開く場合は、ブックの保護(ウィンドウをチェック)をする
 
 が、基本事項のように思いました
 
 取りあえず、トグルボタンで動作、マウスAPI抜き(組み込んでも動作しました)
 コードは、下記で希望の操作かないました
 ただ、もっとすっきり書けないものかと思っています
 
 何かアドバイスありましたらよろしくお願いいたします
 
 Sheet1
 
 Option Explicit
 
 
 Private Sub ToggleButton1_Click()
 
 On Error Resume Next
 'Unprotect
 ThisWorkbook.Protect Structure:=False, Windows:=True
 On Error GoTo 0
 
 If ToggleButton1.Value = True Then '2画面表示させる
 
 ToggleButton1.Caption = "戻 る"
 
 'If Windows.Count = 1 Then ActiveWindow.NewWindow
 
 'Windows(ThisWorkbook.Name & ":1").Activate
 '↑1ブック時OK、複数ブック時NG 実行時エラー '9':インデックスが有効範囲にありません。
 
 If Mid(ActiveWindow.Caption, Len(ActiveWindow.Caption) - 1, 1) = ":" Then  '単独ブック起動時
 
 Windows(ThisWorkbook.Name & ":1").Activate
 Call ThisWorkbook.Workbook_Activate
 
 
 Else   '複数ブック起動時
 
 ActiveWorkbook.Unprotect
 
 ActiveWindow.NewWindow
 
 'Windows(ActiveWindow.Caption).Activate
 Windows(ThisWorkbook.Name & ":1").Activate
 Call ThisWorkbook.Workbook_Activate
 
 End If
 
 
 Else  '1画面表示させる(ウィンドウを1つ閉じる)
 
 ToggleButton1.Caption = "DTセット(2画面表示)"
 
 If Mid(ActiveWindow.Caption, Len(ActiveWindow.Caption) - 1, 1) = ":" Then   '単独ブック起動時
 
 Windows(ThisWorkbook.Name & ":2").Activate
 'ActiveWorkbook.Unprotect
 'ActiveWindow.Close
 'ActiveWindow.WindowState = xlMaximized
 Call ThisWorkbook.Workbook_Deactivate
 
 
 Else   '複数ブック起動時
 
 'Windows(ActiveWindow.Caption).Activate
 'ActiveWorkbook.Unprotect
 'ActiveWindow.Close
 'ActiveWindow.WindowState = xlMaximized
 
 'On Error Resume Next
 Call ThisWorkbook.Workbook_Deactivate
 'On Error GoTo 0
 
 End If
 
 End If
 
 End Sub
 
 
 ThisWorkbook
 
 
 Option Explicit
 
 
 Public max_h As Double
 Public max_w As Double
 
 
 'Private Sub Workbook_Activate()
 Public Sub Workbook_Activate()
 
 
 If Mid(ActiveWindow.Caption, Len(ActiveWindow.Caption) - 1, 1) = ":" Then   '単独ブック起動時
 
 Unprotect
 'Windows.Arrange ArrangeStyle:=xlVertical
 'ActiveWindow.Width = ActiveWindow.Width + 2
 
 ActiveWindow.WindowState = xlMaximized
 max_h = ActiveWindow.Height - 20.25 'なぜか-20.25 必要
 max_w = ActiveWindow.Width
 
 Windows(ActiveWorkbook.Name & ":1").Activate
 With ActiveWindow
 .WindowState = xlNormal '←元に戻す と 同等
 .Top = 0
 .Left = 0
 .Height = max_h
 .Width = 240
 End With
 
 'Windows(Name & ":2").Activate
 Windows(ActiveWorkbook.Name & ":2").Activate
 
 With ActiveWindow
 .WindowState = xlNormal
 .Top = 0
 .Left = 240
 .Height = max_h
 .Width = max_w - 240
 End With
 
 ActiveWorkbook.Protect Structure:=False, Windows:=True
 
 Sheets(2).Select
 
 End If
 
 
 'Protect Structure:=False, Windows:=True
 
 End Sub
 
 'Private Sub Workbook_Deactivate()
 Public Sub Workbook_Deactivate()
 
 Unprotect
 
 On Error Resume Next
 Windows(Me.Name & ":2").Close
 On Error GoTo 0
 
 On Error Resume Next
 ActiveWindow.WindowState = xlMaximized
 On Error GoTo 0
 
 End Sub
 
 
 Private Sub Workbook_WindowActivate(ByVal Wn As Window)
 
 'MsgBox Application.Caption & ActiveWindow.Caption
 'ウインドウ切替時、単独ブックだったら最大化表示
 If Mid(ActiveWindow.Caption, Len(ActiveWindow.Caption) - 1, 1) <> ":" Then  '単独ブック起動時
 
 Unprotect
 ActiveWindow.WindowState = xlMaximized
 
 End If
 
 End Sub
 
 |  |