2014-03-07 22 views
0

我一直卡在這一個。修改前面工作表中的單元格

我正在建造一個自制的電池鎖定系統。
當用戶 從一個工作表
轉到另一個工作表時,該系統的一部分需要鎖定單元格的變體範圍。

該範圍類似於(「A1:K」& lowerLimit)。有些紙張有幾條線,有些甚至可以達到9000.

我創建了第一張模板紙,然後給出了該範圍的名稱並最終複製了該紙張。所以我沒有指出特定範圍的問題。對於每張紙。

問題是我想要的(當用戶從​​一張紙到另一張紙時)自動將名爲範圍的上一張紙鎖定。我找到了一個導致無限循環的解決方案,它有兩個變體,跟蹤ActiveSheet和前一個,使其觸發Private Sub Workbook_SheetActivate(ByVal Sh As Object)。由於上一張表變成了ActiveSheet並繼續運行,所以不起作用。

我覺得奇怪的是Private Sub Workbook_SheetDeActivate(ByVal Sh As Object)在ActiveSheet更改後觸發,還是我只是不明白。

有沒有解鎖表格,鎖定單元格,然後重新鎖定表單的方法。對於特定工作表(將是最後一個ActiveSheet)而不激活該工作表?

如果不可能,你認爲我的sl method方法有一個方法嗎?

謝謝。

+0

在事件開始和Application.EnableEvents = True時使用'Application.EnableEvents = False'和事件代碼結束 –

回答

0

在停用事件之前,activesheet確實會更改。對我來說也沒有意義。

但是使用激活事件或停用工作表的事件。停用發生在激活發生之前。

具有全局變量,並把代碼中的每個片材停用(或激活),其採用所述當前保存活性片,並且使以前的,然後在新的活動片放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 

,您可以精確地比較以前和當前活動的工作表,並且可以根據需要鎖定/解鎖。

相關問題