2017-08-04 77 views
2

插入行我試圖找到一種方法來允許用戶插入行,但只能在特定的範圍內時,紙張被保護的保護工作表。例如,我不希望用戶能夠在行「1」和「2」之間插入一行(因爲它會使我的宏做有趣的事情),但我希望他能夠插入一行其他地方。從只在特定的範圍內

下面的代碼允許用戶在片到處插入行,但是這不正是我想要的:

ActiveSheet.Protect Password:="qwerty", DrawingObjects:=True, Contents:=True, Scenarios:=True _ 
    , AllowFormattingCells:=True, AllowFormattingColumns:=True, _ 
    AllowFormattingRows:=True, AllowInsertingRows:=True, AllowDeletingRows:=True 

有人可以幫我這個問題?

+0

一個簡單的方法就像是一個「非常隱藏的工作表」......在'A1'中具有公式'= A2'。然後簡單地檢查它,如果公式不'= A2'然後只需'Application.Undo':P –

回答

2

有沒有辦法來防止用戶只在特定的範圍內插入行,你可以鎖定這些細胞,防止鎖定的單元格的選擇,這樣用戶就不會在上兩行選擇單元格這可能會阻止他們無意中做它?

您也可以鎖定行插入並設置UserInterfaceOnly:=True並通過宏處理任何行插入,如果他們嘗試在錯誤的位置插入行,則取消該過程。

它是一個必然的是,用戶可以在整個工作表中插入行?

+0

我們可以通過工作表SelectionChange事件實現這一目標。 – Shrikant

+0

它比有點janky更加雖然 –

+0

是的:)但他只問如何做到這一點,所以我把代碼。 – Shrikant

1

您可以使用表上選擇更改事件下面的代碼。

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    If Target.Row = 1 Or Target.Row = 2 Then 
     'MsgBox "Check" 
     ActiveSheet.Protect Password:="qwerty", DrawingObjects:=True, Contents:=True, Scenarios:=True _ 
     , AllowFormattingCells:=True, AllowFormattingColumns:=True, _ 
     AllowFormattingRows:=True, AllowInsertingRows:=False, AllowDeletingRows:=True 
    Else 
     ActiveSheet.Unprotect Password:="qwerty" 
    End If 
End Sub 
+0

非常感謝!這是完美的。 –

+0

歡迎您... – Shrikant