Board logo

標題: [發問] 禁止 雙擊儲存格邊界 [打印本頁]

作者: eigen    時間: 2017-4-14 13:26     標題: 禁止 雙擊儲存格邊界

禁止 雙擊儲存格邊界
[attach]27019[/attach]

我有一個 EXCLE 畫面太過密集,經常不小心 雙擊到儲存格的邊界就移到畫面最下面,十分困擾

我上網尋找,最後找到的方式就是將 TOOL->OPTION->EDIT->Allow cell drag and drop(使用儲存格拖放功能) 取消
[attach]27018[/attach]

之後我找到更進一步的設定方式,讓特定區域的 邊界雙擊移動失效

Dim SaveDragAndDrop As Variant 'For persistence, is declared at module level

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     'NOTE: This event fires first, then the Worksheet_BeforeDoubleClick event.
     '
     'WARNING: Setting a breakpoint in this event will, in effect, cancel any BeforeDoubleClick event, so you can't
     '         single-step through the whole sequence!
     
     'To prevent unwanted jumping to the "End" of a data-set if the user accidentally double-clicks onto the cell
     'border (which is an effect of CellDragAndDrop), disable that functionality while in the range where that
     'behavior is a problem.
     
    If Not Intersect(Target, Range("MyProtectedRange")) Is Nothing Then
         
        If IsEmpty(SaveDragAndDrop) Then
            SaveDragAndDrop = Application.CellDragAndDrop
            Application.CellDragAndDrop = False
        End If
    Else
         
        If Not IsEmpty(SaveDragAndDrop) Then
            Application.CellDragAndDrop = SaveDragAndDrop
            SaveDragAndDrop = Empty
        End If
    End If
End Sub





名稱 MyProtectedRange =Sheet1!$C$4:$F$16

Book_ok.xls 點選黃色部份, 雙擊到儲存格的邊界 失效

點選空白儲存格,雙擊邊界移動的功能 有效

但是這個程式有BUG ,當我點黃色後(失效),再移到 SHEET2 就通通失效了,必需移回SHEET1,再點選白色儲存可才會再生效。

所以我將 SelectionChange 移到 ThisWorkBook 變成 SheetSelectionChange

但是 Intersect 卻有問題,請問那有問題?應該怎麼修改才能正確
作者: eigen    時間: 2017-4-14 15:30

自問自答:
在 ThisWorkBook  加入
Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Application.CellDragAndDrop = True
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

Dim ProtectedRange As Range
Set ProtectedRange = Worksheets("Sheet1").Range("c4:f16")


If Sh.Name = "Sheet1" Then

        If Application.Intersect(Target, ProtectedRange) Is Nothing Then
                Application.CellDragAndDrop = True
        Else
                Application.CellDragAndDrop = False
        End If
Else
        
        Application.CellDragAndDrop = True
End If


End Sub


唯一讓我不解的是
Application.Intersect(Target, ProtectedRange)  ok

為什麼
Application.Intersect(Target, MyProtectedRange)
MyProtectedRange =名稱 = =Sheet1!$C$4F$16 為什麼就不行?
作者: eigen    時間: 2017-4-15 16:10

回復 2# eigen

有興趣的,可以到 https://www.mobile01.com/topicdetail.php?f=511&t=5120593&p=1#64021269

看到相關的討論,我也有整理完的範例~~
作者: eigen    時間: 2017-5-4 14:58

回復 3# eigen


    有沒有高手能指點一下,我用 Application.CellDragAndDrop = False ' "範圍內"

已經能 enable /disable 雙擊邊界的功能

但是Application.CellDragAndDrop 這個功能,會讓 儲存格無法被 select / copy /paste ,實在是太麻煩了,能不能請高手指點一下?

如何將目前select/copy 的資料備份下來? 以便當 Application.CellDragAndDrop  切換時,再還原位置回來
作者: 老夏    時間: 2017-8-11 13:32

Excel是物件導向之程式設計環境

COM:組合元件化之物件模祖

OLE結構***三合一結構:[包裝][嵌入][連結]***程式碼分[屬性][事件][方法]

直接使用:不必去寫又臭又長之 VBA程式碼-及函數

*********************************************************

[認識工作表]

1.CTRL+向右鍵+向右鍵>>至IV65536單元格>>鍵入1>>按ENTER
//'給字作判斷條件


雙擊選取單元格外框: 預設值回第一欄或第一列
如何往右及往下跑? 該方向必需有字才會跑
//'認字作判斷條件

Excel內建之程式模組,接靠雙擊[事件]去觸發該功能
作者: 老夏    時間: 2017-8-11 13:34

[分享]Excel早事先寫好之程式碼

  1、在工具欄右側的空白處雙擊,快速打開“自定”對話方塊。

  2、雙擊[儲存格]總共6處
      A.雙擊儲存格中間:入編輯狀態。
      B.雙擊儲存格外框線:上下左右跑,認字作判斷
      C.雙擊儲存格右下角填滿控點:蓋章,相鄰列中必須有連續的資料

  3、在“格式刷”按鈕上雙擊,格式刷可以反復多次使用。
     [特別提示] 再次單擊“格式刷”按鈕,或者按Esc鍵,可以取消“格式刷”功能。

  4、在標題欄上雙擊,Excel視窗由最大化(原始狀態)還原到原始狀態(最大化)大小。

  5、選中某個單格並將滑鼠移至該該單格右下角成細十字線狀時,雙擊滑鼠,
     [特別提示] 要實現此填充,該單格左側(或右側)相鄰列中必須有連續的資料。
            //學問在如何選Range,資料型態相同或不同會產生不同之結果

  6、如果工具條浮動在工作表區中,我們在工具條的標題欄上雙擊,該工具條返回工作表區上部或下部位置。

  7、在視窗左上角Excel標誌上雙擊,則退出Excel(如果當前文檔沒有保存,系統會提示保存)。

  8、在工作表名稱(Sheet1等)上雙擊,即可對工作表名稱進行“重命名”。

  9、將滑鼠移至垂直捲軸上端與編輯區交界處成雙向拖拉箭頭狀時,雙擊滑鼠,即可將編輯區拆分爲上、下兩個窗口。
       此時,如果將滑鼠移至兩個視窗分界線上雙擊,即可撤銷窗口的拆分。

  10、將滑鼠移至水平捲軸右端成雙向拖拉箭頭狀時,雙擊滑鼠,即可將編輯區拆分爲左、右兩個窗口。
        此時,如果將滑鼠移至兩個視窗分界線上雙擊,即可撤銷窗口的拆分。

  11、將滑鼠移至列標與列標交界處成雙向拖拉箭頭狀時,雙擊滑鼠,即可快速將左側1列設置爲“最適合的列寬”。
        如果選中多列,然後執行此操作,即可將選中的多列設置爲“最適合的列寬”。

  12、將滑鼠移至行標與行標交界處成雙向拖拉箭頭狀時,雙擊滑鼠,即可快速將上面1行設置爲“最適合的行高”。
        如果選中多行,然後執行此操作,即可將選中的多行設置爲“最適合的行高”。

  13、在功能表上雙擊,即可將功能表中所有的功能表項(包括不常的功能表項)全部展開。
        [特別提示]礙手礙腳之新功能
        可以設定全部展開,在工具欄右側的空白處雙擊,快速打開“自定義”對話方塊。
        選項>>取消首先顯示最近使用的功能表

  14、雙擊樞紐分析表中的資料, 可在新的工作表中列出該資料的明細
        雙擊樞紐分析表中欄位名稱:叫出該欄位屬性表
        雙擊樞紐分析表中空白儲存格:群組縮放功能

        15、雙擊[自動加總]按鈕自動產生公式SUM()
        在篩選狀態下,雙擊[自動加總]按鈕自動產生公式SUBTOTAL(9,)

        16、繪圖層物件,雙擊外框:叫出該物件屬性表




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