【问题标题】:VBA Prevent cell/column selection in table without protecting worksheet (Excel 2016)VBA防止在不保护工作表的情况下选择表格中的单元格/列(Excel 2016)
【发布时间】:2018-10-20 17:17:26
【问题描述】:

我想阻止用户选择工作表中的特定列(例如列 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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    给你,整个工作簿的代码:

    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
    

    【讨论】:

    • 完美,我在公式中加入了 = 符号,并在工作表代码中使用了它,但谢谢。
    【解决方案2】:

    真的应该像下面这样使用 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
    

    【讨论】:

      猜你喜欢
      • 2016-05-01
      • 2018-05-14
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      • 2017-02-27
      相关资源
      最近更新 更多