修改上一页中的单元格

时间:2014-03-07 15:25:19

标签: excel-vba vba excel

我一直坚持这个。

我正在建造一个自制的细胞锁定系统 该系统的一部分需要在用户时锁定变体范围的单元格 从一张纸到另一张纸。

该范围就像(“A1:K”& lowerLimit)。有些纸张的线条很少,有些甚至高达9000。

我创建了第一张模板表,然后为该范围命名,最后复制了该表。所以我没有指出该特定范围的问题。对于每张纸。

问题是我想要(当用户从​​一张纸张转到另一张纸张时)自动将之前的纸张名称范围锁定。我找到了一个导致无限循环的解决方案,跟踪了ActiveSheet和之前的两个变体,使用Private Sub Workbook_SheetActivate(ByVal Sh As Object)触发了它。由于上一个工作表成为ActiveSheet并继续,因此不起作用。

我觉得奇怪的是Private Sub Workbook_SheetDeActivate(ByVal Sh As Object)在ActiveSheet更改后触发,或者我只是不知道它。

有没有办法解锁表格,锁定单元格,然后重新锁定表格。对于特定工作表(可能是最后一个ActiveSheet)而不激活该工作表?

如果不可能,你认为我的草率方法有办法吗?

谢谢。

1 个答案:

答案 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

您可以准确地比较之前和当前活动的工作表,并且可以根据需要锁定/解锁。