アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBA ダブルクリックしたときにctrlキーが押されているか知りたいのです。
2007年くらいに同じような質問があり、解決していたのですが、同じコードを書いても動作しません。年数がたちいろいろな環境が変わったせいだと想像しています。
2023年の現在では、どうやったらよろしいのかご存じの方いらっしゃいましたら、教えてください。どうぞよろしくお願いいたします。

質問者からの補足コメント

  • 何を間違えたのか60歳以上の方への質問となってしまいました。年齢は問いませんのでよろしくお願いいたします。

      補足日時:2023/06/30 22:44

A 回答 (1件)

こんにちは



>2007年くらいに同じような質問があり、解決していたのですが、~
これでしょうか?
https://oshiete.goo.ne.jp/qa/3394296.html
ユーザフォームでの取得のようですが、それでよいのかな?

若干修正すれば、使用できるようですね。
◇前者の場合
・回答にタイポがありますので、まずそれを修正
 (変数名 bCtrl の記述ミスが1ヶ所)
・回答中の vbCtrlMask 定数は存在しなくなっているようですので、&H02を使用する
あたりを修正すれば動作すると思います。

◇後者の場合
・32ビット環境であれば、そのまま使えると思います。
・64ビット環境の場合は、API宣言に PtrSafe が必要です。
https://learn.microsoft.com/ja-jp/office/vba/lan …
https://learn.microsoft.com/ja-jp/office/vba/lan …


一方で、通常のシートでのダブルクリックの場合は、Ctrlキーを押すとダブルクリックイベントが発生しないようですので、イベント処理では拾えないようです。
このような場合は、APIの GetAsyncKeyState などを用いて、プリミティブに判定するしかなさそうです。
https://vbabeginner.net/getasynckeystate/
ダブルクリックは、キー間隔を調べてシングルクリックかダブルクリックかを判断する必要があります。
同時にCtrlキーの押し下げを調査すれば、検出可能と思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています