我一直坚持这个。
我正在建造一个自制的细胞锁定系统 该系统的一部分需要在用户时锁定变体范围的单元格 从一张纸到另一张纸。
该范围就像(“A1:K”& lowerLimit)。有些纸张的线条很少,有些甚至高达9000。
我创建了第一张模板表,然后为该范围命名,最后复制了该表。所以我没有指出该特定范围的问题。对于每张纸。
问题是我想要(当用户从一张纸张转到另一张纸张时)自动将之前的纸张名称范围锁定。我找到了一个导致无限循环的解决方案,跟踪了ActiveSheet和之前的两个变体,使用Private Sub Workbook_SheetActivate(ByVal Sh As Object)
触发了它。由于上一个工作表成为ActiveSheet并继续,因此不起作用。
我觉得奇怪的是Private Sub Workbook_SheetDeActivate(ByVal Sh As Object)
在ActiveSheet更改后触发,或者我只是不知道它。
有没有办法解锁表格,锁定单元格,然后重新锁定表格。对于特定工作表(可能是最后一个ActiveSheet)而不激活该工作表?
如果不可能,你认为我的草率方法有办法吗?
谢谢。
答案 0 :(得分:0)
活动表确实在停用事件之前发生了变化。对我来说也没有意义。
但使用活动事件或停用工作表事件。停用发生在激活发生之前。
具有全局变量,并将每个工作表中的代码停用(或激活)以获取当前保存的活动工作表,并使之前的,然后在新的活动工作表中放入activesheet.name:
Private Sub Worksheet_Deactivate()
Previoussheet = gActiveSheet 'currently held gactivesheet variable represents the previously active sheet (as it hasnt been changed yet.
gActivesheet = Activesheet.name 'save the currently active sheet in active sheet
End Sub
您可以准确地比较之前和当前活动的工作表,并且可以根据需要锁定/解锁。