• ベストアンサー

Ctrl + Clickについて

コマンドボタンを『クリック』する時とは別の処理を『Ctrl + クリック』で行いたいのですが、どうコーディングすればいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • don_cha
  • ベストアンサー率34% (139/407)
回答No.3

すみません、サンプルプログラムバグってました。 ifの部分を以下の内容と差し替えてください。 誤) If (chk <> 1) Then 正) If ((chk And &H8000) = &H8000) Then

clover2
質問者

お礼

ありがとうございました。 動作確認できました。 ただ、修正コメント(現象,原因)を追加していただけると、 もっと嬉しかったです。

その他の回答 (2)

  • don_cha
  • ベストアンサー率34% (139/407)
回答No.2

Win32APIのGetKeyStateを使って、クリックイベント時にコントロールキーが押されているかを確認する方法があります。 以下、サンプル Option Explicit Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer Private Const VK_CONTROL = &H11 Private Sub Command1_Click()   Dim chk As Integer      chk = GetKeyState(VK_CONTROL)      If (chk <> 1) Then     MsgBox "Ctrlキーが押されています"   Else     MsgBox "マウスクリックのみでした"   End If   End Sub

  • kentaoru
  • ベストアンサー率56% (13/23)
回答No.1

Clickイベントでは、Ctrlキーなどの特殊なキーが押されていることを判断できません。 MouseDown,MouseUpイベントを使用すると、 特殊なキーが押されていることを判断できますので、 そちらを使用したらどうでしょうか?

関連するQ&A

  • VBでキーボードを使わずに"Ctrl+A"をしたい!

    初歩的な質問で申し訳ないのですが、VBでキーボードを使わずに、何かコマンドボタンを押した時に"Ctrl+A"などを実行したいです。VBでコーディングしていけば同じような機能は実現できるのですが、もっと簡単な方法があるような気がしてなりません・・。このボタンを押したら"Ctrl+A"を実行する、みたいなコーディングはどのようにすれば実現できるのでしょうか?

  • Ctrlキーが押されたことの検出

    コントロールキーを押しながらコマンドボタンを押した時と、単にコマンドボタンを押した時とで、処理を変えようかと考えています。 Application.OnKey "^{}", "ctrl"で、キーを捕まえようかと考えましたが。エラーになります。 で、質問ですが、1つは、Ctrlキー、Shiftキー、Altキーを単体で押したときに任意のプロシージャーを実行することってできますか? 2つ目は、任意のプロシージャーではなく、押されているかどうかの状態のみ調べる方法ってありますか? どなたか、詳しい方教えて頂けないでしょうか?宜しくお願い致します。

  • ctrl+[0]とctrl+0の違い

    windows8.1のコマンドなのですが、ctrl+0は機能するのですがctrl+[0]が機能しません。 ふつうにctrlと0を押すのとは違うのでしょうか? よろしくお願いします。

  • ctrlとクリックを同時に押さないと飛ばない

    okwaveにて、ctrlキーとクリックを同時に押さないと、質問に飛ばない場合とクリックだけで飛ぶ場合があります。 どうしてなのでしょうか?

  • VB6 コマンドボタン クリックイベントについて

    教えてください。 フォームに貼り付けているコマンドボタンのクリックイベントについてですが、クリックイベント内の処理で処理に時間がかかります。コマンドボタンを1度クリックすると、この処理を実行します。この状態であれば、問題ないのです。ところが、コマンドボタンを押して、処理している間にコマンドボタンを連打すると、ずーっと同じ処理を繰り返してしまいます。 クリックイベントが待ち行列にたまっているように思えるのですが、 これを回避する方法などがあれば教えてください。 ・待ち行列をクリアするとか ・待ち行列にイベントがたまっていても、1度しか実行しない。 などなど、具体的な方法とサンプルコードなどを教えていただけないでしょうか。お願いします。 環境VB6 WIN2K です。

  • jQuery IEでctrl + click判別

    jQueryは2.0.0を使用しております。 HTMLのpタグでくくった要素をクリックした際の判別を行いたいと思っております。 以下は参考となりますが、 <p class="button">ボタン</p> 上記のボタンをクリックしたことを取得するため、 $(".button").click(function(event) { alert("アラート"); }); こちらでアラートが表示されるようになりましたが、 crtlキー + クリックしたことを取得したいと思っております。 上記の処理でアラート部分を if (event.ctrlKey){ alert("アラート"); } としますと、Chrome、Firefoxの最新版でアラートが表示されますが、 IEでは表示されません。(私は、IE11、9で確認済みです) IEでもctrl + clickされたことを取得できるようにしたいのですが、 ご教授いただけますと幸いです。

  • Ctrlについて教えてください

    「Ctrl」と「C」でコピーが出来ますよね。 時々間違えて、違うボタンを押す事があります。 そんな時、経歴の様なものが表示されたり、 ページが閉じてしまうこともあります。 その様な作業方法が簡単に説明してあるサイトなど ご存じないですか? 現在困っているのは、 文字が大きく表示されてしまってるのです。 何か別のボタンを押したのだと思いますが、 標準サイズに戻したいのです。 よろしくお願いします。

  • フォトショップ7.0 ctrl+クリック

    フォトショップ7.0を使っているのですが、ctrl+クリックで「レイヤーマスクを選択範囲として読み込む」はできるのですが、複数のレイヤーをアクティブにするctrl+クリックが出来ません! 解かる方おしえていただけますでしょうか?

  • ハイパーリンク ダブルクリック CTRL+クリック

    ハイパーリンク対象のアドレスは青く表示されています。 通常はここをダブるクリックすると希望のサイトにジャンプします。 ところが、時々 CTRL キーを押しながら、クリックしなさいと指示が出ます。 何処が異なるのでしょう。

  • エクセルでctrl+左クリックで複数選択

    エクセルで、Ctrlキーを押しながら、マウスで左クリックを押して複数のセル範囲を選択することがよくあるのですが、この方法では、間違えて選択しても、やり直しが効かず、一旦全部をキャンセルしてから再度選択しなおすしかありません。(一部のキャンセルをする方法をご存知の方は教えてください)で、VBAで、同様の機能を作ろうかと考えています。できれば、左手を開けたいのでCtrlキーの代わりに、シートにトグルボタンを貼り付け、ボタンを選択している間は、Ctrlキーを押しているのと同じと認識させ、セルがクリックされるたびに、Selectionのコレクションのメンバーと紹介して、既に選択されているセル(Range)を再びクリックしたならば、メンバーから除外する。てなことができれば実現可能かと思いました。そこで、Selectionのメンバーって自由に追加したり、削除したりできるのでしょうか?どなたか、詳しい方がいらっしゃいましたら教えて頂けないでしょうか?よろしくお願いいたします。