我做错了什么? Excel 锁定范围

问题描述 投票:0回答:1

我做错了什么? 我收到错误“无法将范围属性设置为“锁定”

    For i = 1 To ActiveWorkbook.Worksheets.Count
    For j = 1 To 2000
    For k = 1 To 500
    If ActiveWorkbook.Worksheets(i).Cells(j, k).Interior.color = color Then                  
ActiveWorkbook.Worksheets(i).Range(ActiveWorkbook.Worksheets(i).Cells(j, k),     
ActiveWorkbook.Worksheets(i).Cells(j, k)).Locked = False
    Next k
    Next j
    Next i

我是否缺少范围和单元格之间的一些链接?

excel vba range locking
1个回答
0
投票

修改您的代码以正确处理锁定的单元格:

For i = 1 To ActiveWorkbook.Worksheets.Count
    ActiveWorkbook.Worksheets(i).Unprotect ' Unprotect the worksheet
    
    For j = 1 To 2000
        For k = 1 To 500
            If ActiveWorkbook.Worksheets(i).Cells(j, k).Interior.Color = color Then
                ActiveWorkbook.Worksheets(i).Cells(j, k).Locked = False
            End If
        Next k
    Next j
    
    ActiveWorkbook.Worksheets(i).Protect ' Protect the worksheet again
Next i

在此修改后的代码中,我在更改单元格属性之前添加了“取消保护”,并在更改后添加了“保护”。这确保您可以修改单元格的“锁定”属性而不会遇到错误。

只需将代码中的“颜色”替换为用于比较单元格内部颜色的实际值。另外,请记住,如果工作表受密码保护,则保护和取消保护工作表可能需要密码。

© www.soinside.com 2019 - 2024. All rights reserved.