VBA在不保护工作表的情况下防止表格中的单元格/列选择(Excel 2016)

时间:2018-05-10 12:17:48

标签: excel vba excel-vba

我想阻止用户选择工作表中的特定列(比如列H:S)而不必保护工作表?我认为这可以通过VBA实现,即如果用户选择指定列中的任何单元格,则游标默认为单元格A1。

我有一个表格,其中包含一些公式,我希望防止被更改/覆盖。如果我尝试使用锁定单元格并保护工作表,则表格将停止运行(即,在表格下方添加数据时,表格中不会包含该表格)。如果工作表没有受到保护,则表格正常运行,允许我输入自动添加到表格中的数据。

编辑:

JvdD下面提供的解决方案,但我的调整:

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If ActiveCell.Column >= 8 And ActiveCell.Column <= 20 Then 
 ActiveSheet.Range("A1").Select
 End Sub

2 个答案:

答案 0 :(得分:2)

在这里,您可以编写整个工作簿的代码:

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

If ActiveCell.Column > 8 And ActiveCell.Column < 20 Then Activesheet.Range("A1").Select

End Sub

答案 1 :(得分:1)

应该真正使用Target对象,如下所示

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target  
As Range)
Set Sh = ActiveSheet
If Target.Column >= 8 And Target.Column <= 20 Then Sh.Range("A1").Select
End Sub