ボタンクリックの反応が遅い

解決


アコ  2005-11-08 09:07:11  No: 92485

またすみません。
質問させていただきます

クリックイベントのボタンの連打ではVBAだと反応がにぶいんです。
ただ数値を増やしていくだけのボタンなのですけどクリックの連打は弱いものでしょうか?
割り当てられたキーに対しての反応はすこぶる良いのですが・・・

どうしてもクリックの反応を良くしたいのですが無理でしょうか?

どなたかお力添えよろしくお願いします。


ガッ  2005-11-08 09:27:32  No: 92486

VBAだとボタンにもダブルクリックイベントがありそうです。
ダブルクリックも対応させていますか?


じゃんぬねっと  URL  2005-11-08 10:48:27  No: 92487

Click イベントは MouseDown イベントと MouseUp イベントと比べてどのようなタイミングで起こるか考えてみてください。


アコ  2005-11-08 17:46:07  No: 92488

皆さんお返事ありがとうございます

ガッさん
ダブルクリックイベントは反応が逆に遅くなるかと思いますがどうなんでしょう

じゃんぬねっとさん
大きなヒントありがとうございます
一番はmousedown設定のほうが反応が良いのでしょうか?

私まだ実際にコーディングして試していないので今晩にでも試して結果報告します


通ってみた  2005-11-08 18:39:53  No: 92489

横槍ですが、ガッさんがおっしゃっているのは、

1クリック目:クリックイベント
2クリック目:ダブルクリックイベント

を使えば連打の判定ができるんじゃないか?ってことだと思うですよ
違ったらスンマソン


KG  2005-11-08 21:28:49  No: 92490

クリックイベントにしか処理を書いていないなら

連打した際、殆どがダブルクリックイベントと認識されてしまい
クリックイベントはたまにしか認識されない為、遅く感じる。。。

って可能性はありますね。
ガッさんと通ってみたさんも仰ってますけども。:)

#試してないので自信はありませんが|=x=;


アコ  2005-11-08 22:30:14  No: 92491

なるほど
ガッさんの仰ることはダブルクリックイベントを外す?ってことでしょうか?
コード的に言えば
CommandButton1_Click()
だけで書いてますが
ダブルクリックイベントについてはよくわからない次第です
おそらく
CommandButton1_MouseDown
で連打対応ができるのかな?と思っています

いろいろ助言ありがとうございます
今晩いろいろと試してみてまた報告します!


通ってみた  2005-11-08 22:34:57  No: 92492


まだ言ってる意味がわかっていないようですね・・・

試しにダブルクリックイベントにも同じ処理を書いてみたらどう?


Blue  2005-11-08 22:52:27  No: 92493

サンプル)
Private Sub CommandButton1_Click()
    Range("A1").Value = Range("A1") + 1
    Range("C1").Value = Range("C1") + 1
End Sub

Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Range("B1").Value = Range("B1") + 1
    Range("C1").Value = Range("C1") + 1
End Sub


Blue  2005-11-08 22:54:10  No: 92494

Value がついてるとことないところが。。。
一行目をコピペしたから、全部そうなってますなw


アコ  2005-11-09 13:10:09  No: 92495

報告します
結論から言うとダブルクリックイベントを使って簡単にできました
そして私がアホだったということがわかりました
ほんと理解が足りなかったせいです

大変皆様にはお手数かけました
こんな簡単な発想もできなかった自分が嫌になっちゃいます
ほんとありがとうございます  m(__)m

また私みたいなアホな人がすぐにわかるように私なりに書かせていただきます

クリックの連打に対応するためにはまず
マウスのクリックに一番反応がいいMouseDownを使います
そしてクリックの連打をするということはダブルクリックもしてしまうということで
ダブルクリックイベントも設定していないと連打内でダブルクリックをした場合に処理を行わず、結果反応がにぶいと感じることになります

よってシングルクリックの設定にはMouseDownを
そしてダブルクリックの設定も同様にするということです
さらにただセルに1ずつ増やしていく処理なら
MouseDownには+1の処理で
DblClickには+2の処理を
すると連打にもちゃんと対応してくれるということでした

逆にわかりにくくなっていたらまたすみません

以上解決でした!

改めて皆様ありがとうございました


KG  2005-11-09 21:49:35  No: 92496

解決はしてらっしゃいますが、こんなのもありですかねー。

Private Sub CommandButton1_Click()
    Range("A1").Value = Range("A1").Value + 1
End Sub

Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Call CommandButton1_Click
    Call CommandButton1_Click
End Sub

#DblClickで+2ってのはちょっと盲点だったかも(笑
#報告みたときに「なるほどー」とか思った|^_^


ガッ  2005-11-10 01:30:51  No: 92497

解決していますが一言。
・MouseDownイベントとClickイベントは完全に対応関係にあるわけではない。
だったと思います。
クリックイベントが発生するマウスの移動距離とかも考慮に入れないと…

※多分


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加