VBA在不保护工作表的情况下防止表格中的单元格/列选择(Excel 2016)
我想阻止用户在不必保护工作表的情况下选择工作表中的特定列(例如H:S列)?我认为这可以通过VBA实现,即如果用户选择指定列中的任何单元格,光标默认为单元格A1 我有一个表格,里面有一些公式,我想防止被更改/覆盖。如果我尝试使用锁定的单元格并保护工作表,表将停止工作(即,在表下方添加数据时,它不会包含在表中)。如果工作表未受保护,则表将正常工作,允许我输入自动添加到表中的数据 编辑: 以下是JvdD提供的解决方案,但有我的调整:VBA在不保护工作表的情况下防止表格中的单元格/列选择(Excel 2016),vba,excel,Vba,Excel,我想阻止用户在不必保护工作表的情况下选择工作表中的特定列(例如H:S列)?我认为这可以通过VBA实现,即如果用户选择指定列中的任何单元格,光标默认为单元格A1 我有一个表格,里面有一些公式,我想防止被更改/覆盖。如果我尝试使用锁定的单元格并保护工作表,表将停止工作(即,在表下方添加数据时,它不会包含在表中)。如果工作表未受保护,则表将正常工作,允许我输入自动添加到表中的数据 编辑: 以下是JvdD提供的解决方案,但有我的调整: Private Sub Worksheet_SelectionCh
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Column >= 8 And ActiveCell.Column <= 20 Then
ActiveSheet.Range("A1").Select
End Sub
Private子工作表\u selection更改(ByVal目标作为范围)
如果ActiveCell.Column>=8且ActiveCell.Column在这里,则为整个工作簿编写代码:
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
Private子工作簿\u sheet selectionchange(ByVal Sh作为对象,ByVal Target作为范围)
如果ActiveCell.Column>8且ActiveCell.Column<20,则Activesheet.Range(“A1”)。选择
端接头
给你,整个工作簿的代码:
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
Private子工作簿\u sheet selectionchange(ByVal Sh作为对象,ByVal Target作为范围)
如果ActiveCell.Column>8且ActiveCell.Column<20,则Activesheet.Range(“A1”)。选择
端接头
应该真正使用如下所示的目标对象
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
Private子工作簿\u sheet selectionChange(ByVal Sh作为对象,ByVal目标
As范围)
设置Sh=ActiveSheet
如果Target.Column>=8并且Target.Column应该像下面那样使用目标对象
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
Private子工作簿\u sheet selectionChange(ByVal Sh作为对象,ByVal目标
As范围)
设置Sh=ActiveSheet
如果Target.Column>=8且Target.Column完美,则我在公式中加入了=符号,并在工作表代码中使用它,但谢谢。完美,我在公式中加入了=符号,并在工作表代码中使用它,但谢谢。