Excel VBA質問箱 IV

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

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


6055 / 13646 ツリー ←次へ | 前へ→

【47455】マウスフック(WH_MOUSE_LL)の後処理 oj 07/3/11(日) 2:01 質問[未読]
【47456】Re:マウスフック(WH_MOUSE_LL)の後処理 Blue 07/3/11(日) 2:10 発言[未読]
【47457】Re:マウスフック(WH_MOUSE_LL)の後処理 oj 07/3/11(日) 6:15 発言[未読]
【47458】Re:マウスフック(WH_MOUSE_LL)の後処理 neptune 07/3/11(日) 10:14 発言[未読]
【47459】Re:マウスフック(WH_MOUSE_LL)の後処理 oj 07/3/11(日) 12:31 お礼[未読]

【47455】マウスフック(WH_MOUSE_LL)の後処理
質問  oj  - 07/3/11(日) 2:01 -

引用なし
パスワード
   マウスフック(WH_MOUSE_LL)について
http://www2.moug.net/bbs/exvba/20070223000033.htm
上記にてリストボックスのスクロールに挑戦してみたのですが
スクロールは出来ましたが保存→閉じる後
他のbook(または同book)を
開こうとすると、かならずエラーが発生しエクセルが閉じてしまいます。
そこで
2007/02/25(日)19:14:57を参考に
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Unload UserForm1
End Sub
とした事で解決しました。とあり色々とテストしてみましたが
問題の解決に至りませんでした。

上記コードは何処に記述すればいいのでしょうか?
2007/02/25(日)13:41:17にある
>後始末なしでのブックのクローズ等もそうです。
これが原因かと思っているのですが・・・

参考までのコードは下記の通りです。
Private Sub Worksheet_BeforeDoubleClick _
(ByVal Target As Range, Cancel As Boolean)

 If Target.Cells.Count > 1 Then
 On Error Resume Next
 If Not Intersect(Target, Range("O9:X9,N18:V18")) Is Nothing Then
    Cancel = True
  UserForm17.Show vbModeless
 Else
  UserForm17.Hide
 End If
 End If


'-------- UserFormモジュール --------
Private Sub UserForm_Initialize()
  ListBox1.RowSource = Sheets("sheet1"). _
  Range(Range("AS3"), Range("AS3").End(xlDown)).Address
  StartHookLL Me
End Sub

Private Sub UserForm_Terminate()
  EndHookLL Me
End Sub

UserFormはUserForm10〜18まで存在します。
どこか問題ありますか?

標準モジュールは2007/02/25(日)14:08:16をコピペしています。
以上よろしくお願いします。

【47456】Re:マウスフック(WH_MOUSE_LL)の後処理
発言  Blue  - 07/3/11(日) 2:10 -

引用なし
パスワード
   (回答ではありません)

あちらの掲示板のコードを参考にされているのであれば、
あちらで聞いたほうがレスがつくと思いますが。

半日もしないうちにレスがつかないからといって閉じるのは
早すぎるんじゃないでしょうか?
せいぜい1週間はまたないと有益なレスはつかないでしょう。


正直、フックとかExcel VBAで扱うには危険すぎるようなコード
を簡単に人に教えたり、教わったりすべきじゃないかなぁとは思います。
それは扱う人のレベルも考えて100%理解していないとOSがハングしたり
して責任は持てないからです。
何をやっているのか理解できないのであれば、そんなコードは使うべきでは
ないです。(バグがあったりすると保守できないし)

【47457】Re:マウスフック(WH_MOUSE_LL)の後処理
発言  oj  - 07/3/11(日) 6:15 -

引用なし
パスワード
   ▼Blue さん:
ありがとうございます。
いつもここの掲示板みて参考にしているもので
たまたまマウススクロールの調べていたらヒットし
あったらいいなくらいで挑戦したのですが最初簡単に
できたなぁと思ったのですがそれから大変でした。
難しい、危険なコード・・・
対策はムリですか?

>
>正直、フックとかExcel VBAで扱うには危険すぎるようなコード
>を簡単に人に教えたり、教わったりすべきじゃないかなぁとは思います。
>それは扱う人のレベルも考えて100%理解していないとOSがハングしたり
>して責任は持てないからです。
>何をやっているのか理解できないのであれば、そんなコードは使うべきでは
>ないです。(バグがあったりすると保守できないし)

【47458】Re:マウスフック(WH_MOUSE_LL)の後処理
発言  neptune  - 07/3/11(日) 10:14 -

引用なし
パスワード
   ▼oj さん:
こんにちは

>難しい、危険なコード・・・
>対策はムリですか?
正直、よく見てないのでわかりませんが、Blueさんが書かれているように
止めたほうが良いです。どうしてもというなら、実行ファイル化できる
言語からExcelを見張ってやるのも手と思います。

私もその昔、VBAでフックとか、SetTimerとかを実験したりしましたが、
やれば出来ますが、とても不安定で危険すぎて実用にはなりません。

モジュールレベル以上の広域変数は何らかの原因で飛んでしまいますから、
そうなった時にはもうおしまいです。VBAのコードにいくら気を付けても
これは防げません。

ですからBlueさんのおっしゃることに全く同意します。

と、言うことで、VB2005、C#、VC++2005はただでMSから入手できますから、
それを勉強するということでどうですか?

【47459】Re:マウスフック(WH_MOUSE_LL)の後処理
お礼  oj  - 07/3/11(日) 12:31 -

引用なし
パスワード
   ▼neptune さん:
ありがとうございます。
ちょっと チョットチョット
素人が扱うものではないようですね。
諦めます。

>>難しい、危険なコード・・・
>>対策はムリですか?
>正直、よく見てないのでわかりませんが、Blueさんが書かれているように
>止めたほうが良いです。どうしてもというなら、実行ファイル化できる
>言語からExcelを見張ってやるのも手と思います。
>
>私もその昔、VBAでフックとか、SetTimerとかを実験したりしましたが、
>やれば出来ますが、とても不安定で危険すぎて実用にはなりません。
>
>モジュールレベル以上の広域変数は何らかの原因で飛んでしまいますから、
>そうなった時にはもうおしまいです。VBAのコードにいくら気を付けても
>これは防げません。
>
>ですからBlueさんのおっしゃることに全く同意します。
>
>と、言うことで、VB2005、C#、VC++2005はただでMSから入手できますから、
>それを勉強するということでどうですか?

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