いつもお世話になっています。目的を検索していますが、思い通りの結果が見つからないのでよろしくお願いします。
会社のPCでプログラム作成していますが、開発環境はエクセル、ワード等のVBAのみです。
一般的ではない画像処理ソフトで画像の輪郭を取る作業なのですが、エクセルVBAから画像処理ソフトをアクティブにし、座標の色を取得し、色によってクリックすることが目的です。
http://thom.hateblo.jp/entry/2015/11/21/002304
上記ページを参考に輪郭のクリックまではできるようになりましたが、輪郭を取るために近隣の座標で短時間にクリックを繰り返すのがダブルクリックとして処理されているようで、シングルクリックして破線で囲む作業が中断されます。
上記ページのプログラムに追記する形でマクロ処理中はダブルクリック禁止とすることはできないでしょうか?
No.4ベストアンサー
- 回答日時:
「Workbook_Open」の方は「初期マウス間隔 = GetDoubleClickTime」が無いとマウスのダブルクリックの間隔を GUI で変更していた時に対応できません(標準の 500ms にしてしまって良ければ無くてもかまいませんけど…)
「Workbook_BeforeClose」の方は、ダブルクリックを無効にしたままエクセルを閉じてしまうと、ダブルクリックが使えなくなって不便なのでそれの対応用です。もちろん GUI で変更すれば対応出来ますが、気づく人がいるでしょうか?
一番の問題は「タッチ操作」についてです。これはあくまでもマウスへの対応なのでタッチ動作には対応できていないと思います(テスト出来る環境が無いので、こちらでは実験が出来ません)なぜかというと「Win32 API」は 32ビット環境の時に作られたものでその頃はタッチ動作なんてなかったのでマウス動作とは内部的には別物だと思います。タッチ動作のも有るはずですが全ての Win32 API を知っているわけではないので、今のところ対応不可です。一応は探してみますが時間がかかるのと、出来てもこちらでは実験が出来ないので実際の確認はお任せする事になると思います。
No.3
- 回答日時:
No.2 の「Sub ダブルクリック有効無効切替()」の改良版です。
他のモジュールから呼び出すときに便利なように「有効」「無効」を指定できるようにしました。'・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Sub ダブルクリック有効無効切替(Optional ダブルクリック無効 As Boolean)
If IsMissing(ダブルクリック無効) Then
If 初期マウス間隔 = 0 Then
MsgBox ("初期マウス間隔がセットされていません。一度閉じて再開してください。")
Else
If GetDoubleClickTime = 1 Then
If MsgBox("ダブルクリックを有効にしますか?", vbDefaultButton1 + vbYesNo) = vbYes Then
SetDoubleClickTime (初期マウス間隔)
End If
Else
If MsgBox("ダブルクリックを無効にしますか?", vbDefaultButton2 + vbYesNo) = vbYes Then
SetDoubleClickTime (1)
End If
End If
End If
Else
If 初期マウス間隔 = 0 Then
SetDoubleClickTime (0)
初期マウス間隔 = GetDoubleClickTime
End If
If ダブルクリック無効 Then
SetDoubleClickTime (1)
Else
SetDoubleClickTime (初期マウス間隔)
End If
End If
End Sub
'・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
※ 確認して切り替える場合は「Call ダブルクリック有効無効切替」
※ 確認せずに「無効」にするときは「Call ダブルクリック有効無効切替(True)」
※ 確認せずに「有効」にするときは「Call ダブルクリック有効無効切替(False)」
ご回答ありがとうございます。
確認したいのですが、Workbook_Openと_BeforeCloseの部分は必要でしょうか。
上記URLのマクロを実行する際のみダブルクリックを無効としたいので、マクロの先頭でSetDoubleClickTime (1)、指定の座標で連続したクリック、EndSubの前でSetDoubleClickTime (500)と記述することは不具合がありますか。
また、ご教示いただいたマクロを自宅タブレットで実行してみたのですが、タッチ操作でダブルクリックするとダブルクリック無効のマクロが機能していないようです。マクロによるダブルクリックのみ無効とするマクロなのでしょうか。それともタッチパネルの操作とマウス操作の違いがあるのでしょうか。
No.2
- 回答日時:
「Win32 API」を使ったものです。
(OS全体に影響が出ますので使用には注意してください)ダブルクリック判定用の時間を1msにしてほぼ不可能にしています。(通常のGUIでの設定では200ms位までしか出来ません)--------------------------------------------------------------------------------
'☆「ThisWorkbook」に
'・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Private Sub Workbook_BeforeClose(Cancel As Boolean)
SetDoubleClickTime (初期マウス間隔)
End Sub
'・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Private Sub Workbook_Open()
初期マウス間隔 = GetDoubleClickTime
SetDoubleClickTime (1) '起動時は有効にしたいときはこの行を削除してください
End Sub
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
'☆「標準モジュール」に
'・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Option Explicit
Public Declare Function GetDoubleClickTime Lib "USER32" () As Long
Public Declare Function SetDoubleClickTime Lib "USER32" (ByVal wCount As Long) As Long
Public 初期マウス間隔 As Long
'・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Sub ダブルクリック有効無効切替()
If 初期マウス間隔 = 0 Then
MsgBox ("初期マウス間隔がセットされていません。一度閉じて再開してください。")
Else
If GetDoubleClickTime = 1 Then
If MsgBox("ダブルクリックを有効にしますか?", vbDefaultButton1 + vbYesNo) = vbYes Then
SetDoubleClickTime (初期マウス間隔)
End If
Else
If MsgBox("ダブルクリックを無効にしますか?", vbDefaultButton2 + vbYesNo) = vbYes Then
SetDoubleClickTime (1)
End If
End If
End If
End Sub
'・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Sub ダブルクリック間隔初期化()
SetDoubleClickTime (0)
初期マウス間隔 = GetDoubleClickTime
End Sub
--------------------------------------------------------------------------------
※ Excel だけでなく他のアプリでもダブルクリックが効かなくなります。
※ 入力したら一度保存して閉じてください(初期値が保存できない為)
※「ダブルクリック間隔初期化」は何だかの原因で「初期マウス間隔」に変な値がセットされてしまった場合OSがもっている初期値(一般的に500ms)をセットするものです。緊急時に使用してください。
No.1
- 回答日時:
一応ダブルクリックを禁じるイベントプロシージャがあるにはあるのですが…
https://www.moug.net/tech/exvba/0150030.html
これはワークシート限定です。Excelの外に出てしまうと効きません。何しろシステムイベントだから、一律に禁止することはWindows自体も想定していないと思います。
一律的に効いて、かつ現実的な線ですぐやれる対策としては、Windowsの設定をいじってダブルクリックの間隔を短くすることが思い付きます。マクロ側で、それよりも長いクリック間隔を維持する必要はありますが。
ご存知でしょうけど、一応設定方法
https://dekiru.net/article/13340/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Excelのマクロボタンをダブルクリックされて困っています
Visual Basic(VBA)
-
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
光るマウスのLEDを消したい!
-
マウスをコンコンして使う人
-
突然マウスの操作が逆になって...
-
マウスの動作が上が右に、右が...
-
マウスオーバーで別の場所にテ...
-
入社2年目の下っ端がマイマウ...
-
マウスを動かすと電子音が聞こ...
-
wordのテキストボックスのサイ...
-
マウスの右ボタンを押しながら...
-
マウスを2つ繋げて同時に2つ...
-
パソコン切替器でマウスが動かない
-
マウスを動かすと CPU使用率が...
-
マウスのカチッカチッ音を消したい
-
突然マウスカーソルが動かなくなる
-
マウスの動作が不安定(カーソ...
-
マウスのクリック音がうるさい
-
マウスパッドの代わりになる物
-
モニター切り替え後マウスが動...
-
スマホ画面タッチで操作できない
-
ラグナロクオンラインをやって...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マウスをコンコンして使う人
-
光るマウスのLEDを消したい!
-
突然マウスの操作が逆になって...
-
マウスを2つ繋げて同時に2つ...
-
入社2年目の下っ端がマイマウ...
-
マウスを動かすと電子音が聞こ...
-
モニター切り替え後マウスが動...
-
マウスの操作音について
-
マウスの速度が戻る
-
マウスをつなぐとピーッと異音...
-
android タブレットでマウスで...
-
マウスの材料
-
マウスを動かすと CPU使用率が...
-
マウスの重量を増やしたい!!
-
マウスのホイールのボタン機能...
-
VBAでダブルクリック禁止
-
pc98版のポリスノーツを遊ぶに...
-
マウスの分解能とは?
-
コードの長いマウスを探してい...
-
マウスで小指がつる
おすすめ情報
早速の回答ありがとうございます。
確認が済むまでしばらくかかりそうなので、ベストアンサーはしばらくお待ちください。