受保护的工作表,单元格锁定,不接受VBA代码

时间:2016-12-14 17:52:00

标签: excel vba excel-vba

我有一张没有密码的受保护的纸张,单元格D6已锁定。该单元格的VBA代码不会运行。

我在这里看过一些帖子。这是解决类似问题的方法。不知道如何使用它或在哪里使用它。如上所述,我没有密码。

Worksheets("Loading").Protect Password:=****, UserInterfaceOnly:=True

Private Sub Worksheet_Change(ByVal Target As range)

Application.EnableEvents = False '<--| disable events handling
On Error GoTo ErrorHandler '<--| be sure to catch any error and enable events handling back

Select Case Target.Address

    Case "$D$4"
       'Recalculate Downpayment D5 if Purchase Price is changed

       range("D5").Value = (range("D4").Value * range("B5").Value) / 100
       Debug.Print "New value for D5 Downpayment "; range("D5").Value
       range("D6").Value = (range("D4").Value - range("D5").Value) ' This cell won't activate when locked and sheet protected
       Debug.Print "D6 New Mortgage " & range("D6").Value

Cells

1 个答案:

答案 0 :(得分:0)

您有一个工作表更改事件,可能会更改单元格D6的值。要更改D6的值,如果单元格已锁定,则VBA需要首先使其不受保护。现在你说你希望D6始终受到保护,请执行以下操作:

 Case "$D$4"
    'unprotect sheet
    Worksheets("Loading").Unprotect

   'Recalculate Downpayment D5 if Purchase Price is changed

   range("D5").Value = (range("D4").Value * range("B5").Value) / 100
   Debug.Print "New value for D5 Downpayment "; range("D5").Value
   range("D6").Value = (range("D4").Value - range("D5").Value) 
   Debug.Print "D6 New Mortgage " & range("D6").Value

  'protect the sheet back
   Worksheets("Loading").Protect

如果这回答了你的问题,请点击复选标记。