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

解決


アコ  2005-11-08 00:07:11  No: 92485  IP: [192.*.*.*]

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

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

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


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

編集 削除
ガッ  2005-11-08 00:27:32  No: 92486  IP: [192.*.*.*]

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

編集 削除
じゃんぬねっと  URL  2005-11-08 01:48:27  No: 92487  IP: [192.*.*.*]

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

編集 削除
アコ  2005-11-08 08:46:07  No: 92488  IP: [192.*.*.*]

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

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

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

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

編集 削除
通ってみた  2005-11-08 09:39:53  No: 92489  IP: [192.*.*.*]

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

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

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

編集 削除
KG  2005-11-08 12:28:49  No: 92490  IP: [192.*.*.*]

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

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

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

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

編集 削除
アコ  2005-11-08 13:30:14  No: 92491  IP: [192.*.*.*]

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

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

編集 削除
通ってみた  2005-11-08 13:34:57  No: 92492  IP: [192.*.*.*]


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

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

編集 削除
Blue  2005-11-08 13:52:27  No: 92493  IP: [192.*.*.*]

サンプル)
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 13:54:10  No: 92494  IP: [192.*.*.*]

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

編集 削除
アコ  2005-11-09 04:10:09  No: 92495  IP: [192.*.*.*]

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

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

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

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

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

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

以上解決でした!

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

編集 削除
KG  2005-11-09 12:49:35  No: 92496  IP: [192.*.*.*]

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

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-09 16:30:51  No: 92497  IP: [192.*.*.*]

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

※多分

編集 削除