Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1920 / 13645 ツリー ←次へ | 前へ→

【71035】BeforeDoubleClickの意味 saya 12/1/26(木) 22:51 質問[未読]
【71040】Re:BeforeDoubleClickの意味 Abyss 12/1/26(木) 23:58 発言[未読]
【71042】Re:BeforeDoubleClickの意味 みそじのおじさん 12/1/27(金) 0:17 発言[未読]

【71035】BeforeDoubleClickの意味
質問  saya  - 12/1/26(木) 22:51 -

引用なし
パスワード
   BeforeDoubleClickというイベントがあります。
動作は「ダブルクリックした後」の処置ですが、なぜBeforeDoubleClickというのでしょうか。
BeforeDoubleClickは直訳すると「ダブルクリックの前に」ですよね?

【71040】Re:BeforeDoubleClickの意味
発言  Abyss  - 12/1/26(木) 23:58 -

引用なし
パスワード
   > 動作は「ダブルクリックした後」の処置ですが、...

ダブルクリックが実行される「直前」で発生します。
そこには、「Cancel」という引数がありますね。

これの値を

 Cancel = True

にすると、「ダブルクリックは無かった事にする」に
なります。

【71042】Re:BeforeDoubleClickの意味
発言  みそじのおじさん  - 12/1/27(金) 0:17 -

引用なし
パスワード
   こんばんは。

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の基準位置がずれる)
# 現象に悩まされていまして今度ぜひコードを見て頂きたいです^^

1920 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free