|
こんばんは。
Abyssさんと同席するのは気が引けてしまうのですが、書いてしまいましたので^^;
▼sayaさん
そうですよね。ダブルクリックされた後に起きるイベントの様に感じますよね。
ですが、それがsayaさんが直訳したその通りの動作なのです。
本来ワークシート上でダブルクリックをするとセルの編集状態になりますよね。
しかし
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
End Sub
この様にコーディングしたとします。
第二引数のCancelはイベントが発生した時点では Falseが設定されています。
Cancel = True に設定すると、このプロシージャを抜けると既定のダブルクリ
ックの操作は実行されません。(セルの編集状態にはならない)
ダブルクリックの操作をキャンセル出来る→すなわちダブルクリックの実行前
という事になります。
これがもしAfterDoubleClickというイベントならダブルクリックを実行後です
から「何をキャンセルするの?もう手遅れだよ!」なんて感じで私は押さえて
いますね^^
キャンセルが出来るイベントの多くはBefore****
キャンセルが出来ないイベントはAfter****となっている場合が多いですね。
簡単に流れを書くと
ダブルクリックをする
↓
OSより「シート上でダブルクリックされたよ」とVBAにメッセージを通知
↓
VBA上では「ダブルクリックされましたか!ではVBAではBeforeDoubleClick
イベントとしてユーザーに提供しよう!」
↓
「キャンセルする、しないも自由。Targetも御自由にお使い下さい」
と、こんな感じですかね。(かなり大雑把ですが、、)
ですからパソコン上ではダブルクリックがされた後に発生しているのですが、
VBAではそれをBeforeDoubleClickとして定義しているんですね。
こんな説明でいかがでしょうか?それでは失礼します。
# 大きく説明に間違いがあれば突っ込みをお願い致します^^;
# 他板ですが、Accessibleオブジェクトを使ったサンプル大変勉強になりまし
# た。Abyssさんの投稿の前に私も別アプローチでDrag&Dropでスクロール
# を作成していました。Drag中のYposが不安定になる(Yの基準位置がずれる)
# 現象に悩まされていまして今度ぜひコードを見て頂きたいです^^
|
|