Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel:在双击之前禁用有关尝试更改受保护单元格的警报_Excel_Vba - Fatal编程技术网

Excel:在双击之前禁用有关尝试更改受保护单元格的警报

Excel:在双击之前禁用有关尝试更改受保护单元格的警报,excel,vba,Excel,Vba,我有一个工作表,它有一个受保护的单元格范围。这些单元格中有名称,我希望有一个before双击事件,该事件显示一个表单,并根据双击单元格中的名称在表单中预加载信息 我使用双击,这样用户在第一次单击时就可以选择单元格,然后我可以使用ActiveCell.Value获取名称并加载适当的信息 但是,由于我已经保护了该范围,当我双击单元格时,会出现excel提示,提示 您试图更改的单元格或图表受保护,因此为只读 要修改受保护的单元格或图表,请首先使用“取消工作表保护”命令(查看选项卡,更改组)删除保护。可

我有一个工作表,它有一个受保护的单元格范围。这些单元格中有名称,我希望有一个before双击事件,该事件显示一个表单,并根据双击单元格中的名称在表单中预加载信息

我使用双击,这样用户在第一次单击时就可以选择单元格,然后我可以使用
ActiveCell.Value
获取名称并加载适当的信息

但是,由于我已经保护了该范围,当我双击单元格时,会出现excel提示,提示

您试图更改的单元格或图表受保护,因此为只读

要修改受保护的单元格或图表,请首先使用“取消工作表保护”命令(查看选项卡,更改组)删除保护。可能会提示您输入密码


表单仍按计划触发,但我想阻止excel提示的发生。有没有办法禁用提示?如果没有,是否有我没有想到的另一种方法?

对于您的特殊情况,之所以会发生这种情况,是因为您启用了工作簿选项“允许在单元格中直接编辑”-可在此处找到:

可通过代码进行设置,例如:

Application.EditDirectlyInCell = True
因此,当您双击事件激发,但下一步操作是输入要编辑的单元格时,由于您已保护该单元格,因此会收到警报。防止警报的最简单方法是在“编辑”阶段发生之前取消事件-您只想使用事件启动表单,对吗?因此,事件处理程序如下所示:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    Dim varValue As Variant

    'get the cell value
    varValue = ActiveCell.Value

    'do something with it - you can launch your form here        
    MsgBox CStr(varValue)

    ' NOTICE here that you can cancel the double click event 
    ' meaning no attempt to edit the cell will be made per the users double click
    Cancel = True

End Sub

嗨…………通过代码取消对该工作表的保护。表2.取消保护“pwd”