Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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
VBA在不保护工作表的情况下防止表格中的单元格/列选择(Excel 2016)_Vba_Excel - Fatal编程技术网

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

VBA在不保护工作表的情况下防止表格中的单元格/列选择(Excel 2016),vba,excel,Vba,Excel,我想阻止用户在不必保护工作表的情况下选择工作表中的特定列(例如H:S列)?我认为这可以通过VBA实现,即如果用户选择指定列中的任何单元格,光标默认为单元格A1 我有一个表格,里面有一些公式,我想防止被更改/覆盖。如果我尝试使用锁定的单元格并保护工作表,表将停止工作(即,在表下方添加数据时,它不会包含在表中)。如果工作表未受保护,则表将正常工作,允许我输入自动添加到表中的数据 编辑: 以下是JvdD提供的解决方案,但有我的调整: Private Sub Worksheet_SelectionCh

我想阻止用户在不必保护工作表的情况下选择工作表中的特定列(例如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
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完美,则我在公式中加入了=符号,并在工作表代码中使用它,但谢谢。完美,我在公式中加入了=符号,并在工作表代码中使用它,但谢谢。