2016-11-09 53 views
0

因此,使用宏我可以创建新工作表,其中一些单元格将被锁定。我在宏中使用此方法:如何在Excel中处理这个单元格锁? (VBA)

ActiveSheet.Protect UserInterfaceOnly:=False(对于整个新的工作表) 然后在这个宏的一些细胞:locked = False

然后锁定属性,其他的宏切换特定细胞的使用真或假锁。例如,此表中的一个表被锁定,但是按钮的宏重新计算并重写表的值,并且在宏的开始处table.Locked = False和宏Locked = True的末尾再次执行此操作。

但是当我保存Excel,关闭并重新打开它,我按下按钮,但我得到"unable to set the Locked property"

我应该怎样做呢?

更新:

Sub userinterface() 

ActiveSheet.Protect UserInterfaceOnly:=True 

End Sub 


Sub locking() 

Range("A1").Locked = False 
Range("A1") = 5 
Range("A1").Locked = True 

End Sub 

所以我有一个新的工作表,和我运行用户接口宏。它锁定整张纸。然后我运行锁定宏,在给定单元格中写入5并再次锁定单元格。之后,我保存Excel,关闭并打开它,我只想运行锁定宏。此时我收到错误。

+1

Máté,我们需要的是一个最小的,完整的,可验证的例子来重现这个问题,如下所示:http://stackoverflow.com/help/mcve没有这些,我很难理解你似乎经历过的问题并不能重现它(为了解决它)。因此,请添加您当前使用的完整代码来锁定文件(所有相关的宏及其放置位置:例如作为工作表事件,或者在文件关闭时作为事件执行等)。也许那么我们可以重现你的问题。 – Ralph

+0

当然,它会很短。 –

+1

这是你的全部代码吗?没有什么可以表明这不应该工作得很好?在你的问题中你说'table.locked = False',但是代码中有其他说明吗? –

回答

1

显然,UserInterfaceOnly选项未与文件一起存储,并且重新打开后,工作表完全受保护,您无法解锁受保护工作表上的单元格。

可以重置UserInterfaceOnly选项,而不在您的例子不保护所以这将是

Sub locking() 

    ActiveSheet.Protect UserInterfaceOnly:=True 
    Range("A1").Locked = False 
    Range("A1") = 5 
    Range("A1").Locked = True 

End Sub 

当然,在这个例子中解锁电池是没有必要的,因为您已设置的选项设置为true,但我认为这是与你的完整宏有关。

+0

谢谢,它会很好。我认为用户界面保护会锁定未锁定的单元格,但正如我所看到的那样。所以我只需要在宏的开头写这个。 –