|
▼yoshi さん:
>どういう不都合が出ているのか、どうしたいのか↑の説明ではさっぱり分かりません。
>09/5/30(土) 16:19 ←に示したマクロで、複数ブックを開いても、それぞれウィンドウの切替は出来ましたけど...
>タスクバーのクリックでも、メニューのウィンドウからの切替でも出来ました。
お手数かけます よろしくお願い致します
以下のようにしてみました
新規ブック開く
上記にコード貼り付け、トグルボタン追加
エクセル保存、終了
上記起動
トグルボタン 実行
マウス移動でウインドウの切替動作 良好
ファイル開くで、新規ブック作成
新規ブックが全画面で表示
タスクバーで、マクロブック選択
マクロブック2画面で表示される
マウス移動で、2画面の切替が出来ない
VBEの画面を見てみると、VBEのタイトルバーがちかちかしている
Module1 mouse_monitore_Stop を実行すると VBEのタイトルバーがちかちかが停止
上記で
マクロブック2画面で表示される
マウス移動で、2画面の切替が出来ない
↑
マウス移動で、アクティブウインドウの切替が出来ないものかと思っています
よろしくお願い致します
貼り付けコード
--------------------------------------------------------
'Sheet1モジュール
Option Explicit
Private Sub ToggleButton1_Click()
Dim ww!
'If ToggleButton1.Value = True Then
If ActiveWorkbook.Windows.Count = 1 Then
ToggleButton1.Caption = "戻 る"
Parent.Unprotect
ActiveWindow.NewWindow
With Windows(Parent.Name & ":1")
.Activate
ActiveWorkbook.Windows.Arrange ArrangeStyle:=xlVertical
ww = .Width + 2 - 240
.Width = 240
End With
With Windows(Parent.Name & ":2")
.Activate
.Left = .Left - ww: .Width = .Width + ww
End With
Sheets("Sheet2").Select
Parent.Protect Structure:=False, Windows:=True
mouse_monitore_Start
Else
ToggleButton1.Caption = "DTセット(2画面表示)"
Parent.Unprotect
Windows(Parent.Name & ":2").Close
ActiveWindow.WindowState = xlMaximized
mouse_monitore_Stop
End If
End Sub
--------------------------------------------------------
'ThisWorkbook
'ブックモジュール(ThisWorkbook)
Option Explicit
Private Sub Workbook_Activate()
Dim wn As Window, aw As Window
Set aw = ActiveWindow
If ActiveWorkbook.Windows.Count > 1 Then
For Each wn In ActiveWorkbook.Windows
wn.Activate
Next
aw.Activate
End If
End Sub
Private Sub Workbook_Deactivate()
ActiveWindow.WindowState = xlMaximized
End Sub
--------------------------------------------------------
'Module1
'Module1モジュール
Option Explicit
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function SetTimer Lib "user32" ( _
ByVal Hwnd As Long, ByVal nIDEvent As Long _
, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Sub KillTimer Lib "user32" ( _
ByVal Hwnd As Long, ByVal nIDEvent As Long)
Private Declare Sub GetCursorPos Lib "user32" ( _
lpPoint As POINTAPI)
Private Declare Function WindowFromPoint Lib "user32" ( _
ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetParent Lib "user32" ( _
ByVal Hwnd As Long) As Long
Private Const ERROR_SUCCESS As Long = 0
Private myTimerId As Long
Sub TimerProc(ByVal Hwnd As Long, ByVal uMsg As Long _
, ByVal idEvent As Long, ByVal dwTime As Long)
Static myX As Long, myY As Long
Dim myPoint As POINTAPI
Dim myHwnd As Long
GetCursorPos myPoint
With myPoint
If .x = myX And .y = myY Then Exit Sub
myX = .x: myY = .y
End With
myHwnd = WindowFromPoint(myX, myY)
myHwnd = GetParent(myHwnd)
If myHwnd = ERROR_SUCCESS Then Exit Sub
myHwnd = GetParent(myHwnd)
If myHwnd <> Application.Hwnd Then Exit Sub
Debug.Print myX, myY
If ActiveWindow.WindowState <> xlMaximized Then
If myX < 350 Then
On Error Resume Next
Windows(ActiveWorkbook.Name & ":1").Activate
On Error GoTo 0
Else
On Error Resume Next
Windows(ActiveWorkbook.Name & ":2").Activate
On Error GoTo 0
End If
End If
End Sub
Sub mouse_monitore_Start()
myTimerId = SetTimer(0&, 0&, 0&, AddressOf TimerProc)
End Sub
Sub mouse_monitore_Stop()
KillTimer 0&, myTimerId
End Sub
|
|