Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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/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
Vba 条件锁单元格,无法排序_Vba_Excel - Fatal编程技术网

Vba 条件锁单元格,无法排序

Vba 条件锁单元格,无法排序,vba,excel,Vba,Excel,我正在尝试编写一个宏来锁定任何大于0的单元格。当我运行下面的代码时,它会工作,但会锁定第一行,在那里我有一个下拉箭头,可以进行排序和数字筛选。有没有办法添加到这个代码中,这样第一行就不会被锁定 Sub Test() Dim Cell As Range Dim MyPlage As Range With ThisWorkbook.ActiveSheet .Unprotect .Cells.Locked = False Set

我正在尝试编写一个宏来锁定任何大于0的单元格。当我运行下面的代码时,它会工作,但会锁定第一行,在那里我有一个下拉箭头,可以进行排序和数字筛选。有没有办法添加到这个代码中,这样第一行就不会被锁定

Sub Test()
    Dim Cell As Range
    Dim MyPlage As Range

    With ThisWorkbook.ActiveSheet
        .Unprotect
        .Cells.Locked = False
        Set MyPlage = .Range("J2:AA1074")
        For Each Cell In MyPlage
            If Not IsError(Cell) Then
                If Cell.Value > "0" Then
                    Cell.Locked = True
                End If
            End If
        Next
        .Protect
    End With

End Sub

最简单的方法是定义不包括顶行的范围:)

改变

.Range("J2:AA1074")

此外,您可以直接使用
SpecialCells
,而不是循环遍历范围内的每个单元格并检查该单元格是否有错误。例如(经过尝试和测试

要确保自动筛选和排序工作正常,请在
中指定它。请像我上面所做的那样保护

在运行上述代码之前,还需要执行一个额外的步骤

  • 如果工作表已受保护,请取消对其的保护
  • 在“审阅”选项卡下,单击“允许用户编辑范围”
  • 添加“新”范围
  • 选择允许用户排序的范围
  • 屏幕截图


    最简单的方法是定义不包括顶行的范围:)

    改变

    .Range("J2:AA1074")
    

    此外,您可以直接使用
    SpecialCells
    ,而不是循环遍历范围内的每个单元格并检查该单元格是否有错误。例如(经过尝试和测试

    要确保自动筛选和排序工作正常,请在
    中指定它。请像我上面所做的那样保护

    在运行上述代码之前,还需要执行一个额外的步骤

  • 如果工作表已受保护,请取消对其的保护
  • 在“审阅”选项卡下,单击“允许用户编辑范围”
  • 添加“新”范围
  • 选择允许用户排序的范围
  • 屏幕截图


    最简单的方法是定义不包括顶行的范围:)

    改变

    .Range("J2:AA1074")
    

    此外,您可以直接使用
    SpecialCells
    ,而不是循环遍历范围内的每个单元格并检查该单元格是否有错误。例如(经过尝试和测试

    要确保自动筛选和排序工作正常,请在
    中指定它。请像我上面所做的那样保护

    在运行上述代码之前,还需要执行一个额外的步骤

  • 如果工作表已受保护,请取消对其的保护
  • 在“审阅”选项卡下,单击“允许用户编辑范围”
  • 添加“新”范围
  • 选择允许用户排序的范围
  • 屏幕截图


    最简单的方法是定义不包括顶行的范围:)

    改变

    .Range("J2:AA1074")
    

    此外,您可以直接使用
    SpecialCells
    ,而不是循环遍历范围内的每个单元格并检查该单元格是否有错误。例如(经过尝试和测试

    要确保自动筛选和排序工作正常,请在
    中指定它。请像我上面所做的那样保护

    在运行上述代码之前,还需要执行一个额外的步骤

  • 如果工作表已受保护,请取消对其的保护
  • 在“审阅”选项卡下,单击“允许用户编辑范围”
  • 添加“新”范围
  • 选择允许用户排序的范围
  • 屏幕截图


    您可以将以下代码添加到
    工作表模块中(使用自动过滤器将
    范围(“J1:AA1”)
    更改为范围):


    您可以将以下代码添加到
    工作表模块中(使用自动过滤器将
    范围(“J1:AA1”)
    更改为范围):


    您可以将以下代码添加到
    工作表模块中(使用自动过滤器将
    范围(“J1:AA1”)
    更改为范围):


    您可以将以下代码添加到
    工作表模块中(使用自动过滤器将
    范围(“J1:AA1”)
    更改为范围):



    那么为什么不相应地定义您的范围呢?不要使用
    .Range(“J2:AA1074”)
    ,而是使用
    .Range(“J3:AA1074”)
    @SiddharthRout,我刚刚发现,如果排序范围中有任何锁定的单元格(当工作表受到保护时),我无法使用自动筛选对列进行排序。因此,这没有帮助。您的问题是什么<代码>1
    确保第1行未锁定?或者
    2
    如果有一个锁定的单元格或两者都有,则无法排序?@SiddharthRout,据我所知,OP希望取消第一行的锁定,然后能够使用autofilter@simoco例如我想是的。只是想在发布之前确认一下,因为我的答案已经准备好了:)那么为什么不相应地定义你的范围呢?不要使用
    .Range(“J2:AA1074”)
    ,而是使用
    .Range(“J3:AA1074”)
    @SiddharthRout,我刚刚发现,如果排序范围中有任何锁定的单元格(当工作表受到保护时),我无法使用自动筛选对列进行排序。因此,这没有帮助。您的问题是什么<代码>1
    确保第1行未锁定?或者
    2
    如果有一个锁定的单元格或两者都有,则无法排序?@SiddharthRout,据我所知,OP希望取消第一行的锁定,然后能够使用autofilter@simoco例如我想是的。只是想在发布之前确认一下,因为我的答案已经准备好了:)那么为什么不相应地定义你的范围呢?不要使用
    .Range(“J2:AA1074”)
    ,而是使用
    .Range(“J3:AA1074”)
    @SiddharthRout,我刚刚发现,如果排序范围中有任何锁定的单元格(当工作表受到保护时),我无法使用自动筛选对列进行排序。因此,这没有帮助。您的问题是什么<代码>1
    确保第1行未锁定?或者
    2
    如果有一个锁定的单元格或两者都有,则无法排序?@SiddharthRout,据我所知,OP希望取消第一行的锁定,然后能够使用autofilter@simoco例如我想是的。只是想在发布之前确认一下,因为我的答案已经准备好了:)那么为什么不相应地定义你的范围呢?不要使用
    .Range(“J2:AA1074”)
    ,而是使用
    .Range(“J3:AA1074”)
    @SiddharthRout,我刚刚发现我无法对列进行排序