Board logo

標題: 工作表 worksheet 物件事件函數內參數 Cancel 用法 [打印本頁]

作者: Scott090    時間: 2015-12-6 09:33     標題: 工作表 worksheet 物件事件函數內參數 Cancel 用法

請問\
這個事件函數 Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel 是對甚麼來定義布林值,它的意義是什麼
可否舉例說明要怎麼用?

謝謝
作者: jackyq    時間: 2015-12-6 20:31

常態下當某 cell 被雙極時, 會出現可以文字編輯的閃爍游標

Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
End Sub

加入 Cancel = True 後
不會出現可文字編輯的閃爍游標
作者: yen956    時間: 2015-12-7 04:30

回復 2# jackyq
大大你好, 它的作用是什麼?
有什麼用途?
作者: c_c_lai    時間: 2015-12-7 06:58

本帖最後由 c_c_lai 於 2015-12-7 07:06 編輯

回復 1# Scott090
舉個例子來說明:
工作表1 (工作表1):
  1. Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  2.     If Not (Target.Column = 1 Or Target.Column = 2) Then Exit Sub
  3.     Cancel = True

  4.     If Target.Column = 1 Then
  5.         工作表1.Ex
  6.     Else
  7.         工作表2.Ex
  8.     End If
  9. End Sub

  10. Sub Ex()
  11.     MsgBox "工作表1"
  12. End Sub
複製代碼
工作表2 (工作表2):
  1. Sub Ex()
  2.     MsgBox "工作表2"
  3. End Sub
複製代碼
說明一:
  1. Cancel As Boolean (原文)
  2. False when the event occurs. If the event procedure sets this argument to True,
  3. the default double-click action isn't performed when the procedure is finished.
複製代碼
參數 Cancel 預設值為 False,亦即當為 False 值則啟動該事件;你可試著在有欄位值的
欄位內,滑鼠連按兩下你會發現該欄值會反白或閃爍。
如該引數宣告為 True 時,該雙擊的動作完成時,反白或閃爍都是毫無作用的,
意即不會啟動該事件的反白或閃爍之提示作用。
說明二:
  1. Need help with code to do the folowing when clicking on diffrent cells
  2. in a worksheet  (需要在該工作表中加入以下之程式碼)

  3. Column A when clicket in any row show form1.Ex  (需在"工作表1"加入一 Sub Ex() 程式碼)
  4. Column B when clicket in any row show form2.Ex  (需在"工作表2"加入一 Sub Ex() 程式碼)
複製代碼
當被點選的欄位為 A 欄時,則執行 工作表1.Ex;
當被點選的欄位為 B 欄時,則執行 工作表2.Ex。
作者: c_c_lai    時間: 2015-12-7 07:14

本帖最後由 c_c_lai 於 2015-12-7 07:15 編輯

回復 3# yen956
你可以試著觀察:
  1. Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  2.     Cancel = True
  3.     If Not (Target.Column = 1 Or Target.Column = 2) Then Exit Sub
  4.     '  Cancel = True
  5.             .
  6.             .
  7.             .
  8. End Sub
複製代碼
與下列不同的處裡之間的不同變化:
  1. Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  2.     '  Cancel = True
  3.     If Not (Target.Column = 1 Or Target.Column = 2) Then Exit Sub
  4.     Cancel = True
  5.             .
  6.             .
  7.             .
  8. End Sub
複製代碼

作者: Scott090    時間: 2015-12-7 08:06

回復 2# jackyq

謝謝你的提示
作者: Scott090    時間: 2015-12-7 08:14

回復 5# c_c_lai

非常感恩  詳盡的解說
自從Win soft 更新把 ActiveX控制項搞壞以後,就盡可能不用 CommandButtom
而改由 Worksheet 事件取代
作者: jackyq    時間: 2015-12-7 08:41

本帖最後由 jackyq 於 2015-12-7 08:44 編輯

回復 3# yen956


    實現指定的 cell , 使其禁止被手動修改期值
    不會出現可文字編輯的閃爍游標
    自然就無法手動修改 Range
作者: yen956    時間: 2015-12-7 10:13

回復 8# jackyq
果然可以禁止用 "DoubleClick" 的方法修改Cell的值(雖然可用其方法),
謝謝大大的說明與指導!!
作者: yen956    時間: 2015-12-7 10:21

回復 5# c_c_lai
謝謝c大詳盡的說明, 沒想到禁止 "DoubleClick" 還是有它的特定用途.
p.s. 關於 監看視窗已知道怎樣用了(包括用右鍵), 真好用,
不管用來追綜自已的VBA, 還是大大們神奇的VBA均很不錯, 謝謝!!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)