|
大変遅くなりました m(_ _)m
解説、添削ありがとうございます
>コントロールツールボックスではそうなるようです。
>色々問題のあるコントロールなので、昔ながらのフォームのボタンを使われたらどうでしょう。
普段、VBのツールバーを表示しているので、これを使用していました
フォームのコントロールはあまり使用したことはないです
ただ、こちらには、トグルボタンはありました
どうするか、もう少し検討してみます
>以下のかんじくらいにはなると思います。
コードのご提示ありがとうございます
全然、違いますね、1/4ぐらいになっているし・・・
Parentあまり使用したことはありません
また、自分の理解が足りていないことが原因で無駄が多いこと理解できました
ありがとうございました
>取りあえず、トグルボタンで動作、マウスAPI抜き(組み込んでも動作しました)
>コードは、下記で希望の操作かないました
は勘違いでした
別ブックを起動すると、マウス移動でのウインドウの切り替えは出来なくなりました
yoshiさんのコードにマウスのAPIを追加してみましたが
やはり、別ブックを起動すると、
マウス移動でのウインドウの切り替えは出来なくなりました
そこで、色々、StartSample、StopSampleを散りばめて記述してみましたが (*o*)\baki
うまく出来ませんでした
つらつら思うに、別ブックの起動を含めた制御を行うには
アプリケーションレベルでの制御が必要になると思い
理解が乏しくあまり使用したことがないのですが下記のクラスを使用してみました
------------------------------------------------------
'Class1
Option Explicit
Public WithEvents appevent As Application
Private Sub appevent_WindowActivate(ByVal Wb As Workbook, ByVal Wn As Window)
'MsgBox ActiveWindow.Caption
'MsgBox Parent.Caption
If Mid(ActiveWindow.Caption, Len(ActiveWindow.Caption) - 1, 1) = ":" Then
MsgBox ActiveWindow.Caption
End If
End Sub
------------------------------------------------------
'Module1
Option Explicit
Dim myobject As New Class1
Sub Test()
Set myobject.appevent = Application
End Sub
Testを実行すると、複数ブック、複数ウインドウを開いて
マウスでブックを選んだとき、タスクバーで選択したときとか
タイトルバーのキャプションをメッセージ出来ました
>>この辺の処理、トラウマで、いつも、コードが動くように
>>訳もわからず改変していって??になってしまいます
ウインドウズの操作が苦手(いつも??)で闇雲コードとなっていましたが
これと、APIでHwndが扱えれば、かなりのことが出来そうな気がしてきました
↑
気がしているだけですが・・・
ここまでの理解で下記してみましたが
他ブック選択後、2画面ブックにもどってマウスでウインドウの切り替えは出来ませんでした
Private Sub appevent_WindowActivate(ByVal Wb As Workbook, ByVal Wn As Window)
'MsgBox ActiveWindow.Caption
'MsgBox Parent.Caption
If Mid(ActiveWindow.Caption, Len(ActiveWindow.Caption) - 1, 1) = ":" Then
'MsgBox ActiveWindow.Caption
mouse_monitore_Start
Else
mouse_monitore_Stop
End If
End Sub
TimerProcが理解できていないためのような気もしますが
上記アプローチが悪いためかもしれません
アドバイス頂けるとうれしいです
よろしくお願いいたします
|
|