2017-11-08 2 views
1

ExcelでVBAフォームを使用して、画像コントロールの画像ソースを更新する「次へ」および「前へ」ボタンがあります。VBA:フォームコントロール(ボタン)のダブルクリックを無効にする

画像をループするために、これらのボタンを非常に素早く連続してクリックしたいと考えています。しかし、私が短い連続(ダブルクリック)で2回クリックすると、私は1つの応答しか得ることができません。

これは、2回のクリックが非常に近いときにクリックイベントの代わりにトリガーされるボタンにダブルクリックイベントがあるためです。

私の目標は、ダブルクリックイベントを完全に無効にして、私が望むようにボタンをすばやくクリックできるようにすることです。それを行う方法はありますか?

+0

'DoubleClick'イベントセットに' Cancel = True'を設定しようとしましたか? –

+0

@David G.動作しません。それはMouseUpです... – Excelosaurus

答えて

2

代わりにMouseUpイベントを代行受信してください。

+0

良いアイデアは、動作しません。明らかに、MouseDownはダブルクリックごとに1回しか呼び出されません。 –

+0

私の編集を参照してください。それはMouseUpです。 – Excelosaurus

0

通常のコマンドボタンは最適なコントロールではない可能性があります。あなたがスピンボタン(次の/後ろのコントロールを持つもの)のために多くを呼び出すようにあなたがしていることを聞いています。

もしそれがカットされないならば、単純な解決策は、クリックイベントを2回呼び出すだけでも、ダブルクリックすることです。

+0

スピンボタンのポイントが良い。私はそれを調べてみましょう。そして、はい、ダブルクリックからクリックイベントを呼び出すと正常に動作します。 –

0

私は実際にこれのためにかなり簡単な回避策を考え出し:

DoubleClickイベントでは、私は単純にそうようにClickイベントを呼び出すことができます。

Private Sub NextBtn_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 
    NextBtn_Click 
End Sub 

私は今のようにボタンをクリックすることができています私が望むように速く、クリックするたびに同じコードが実行されます。

+3

このようにイベントハンドラを「手動で」呼び出すことは、何か間違っているという非常に強い兆候です。イベントハンドラは通常のプロシージャではなく、イベント*を処理します。 –

+1

True;理想的には、私は両方のイベントハンドラから "GoToNextImage"のような関数を呼び出します。 (私は別の機能を作成する目的であまりにも怠惰でした) –

+0

しかし、適切なイベントを処理すると、はるかに堅牢で洗練されたソリューションになります:) –

関連する問題