2012-12-06 109 views
2

通常解凍窗格代碼Excel VBA:解凍工作簿對象工作表的窗格?

ActiveWindow.FreezePanes = False 

但說我有一個類型的工作簿的原始資料和String類型的SHEETNAME。例如

sourceBook.sheets(sheetName) 

如何在不調用ActiveWindow之類的工作簿表單上解凍窗格?

回答

1

這將從每片每個窗口爲給定的工作簿中刪除FreezePanes,這也確保了同一個工作表是活躍在運行代碼之前已經激活:

Dim w As Window 
Dim activews As Worksheet, ws As Worksheet 
For Each w In sourceBook.Windows 
    w.Activate 
    If activews Is Nothing Then 
     Set activews = w.ActiveSheet 
    End If 
    For Each wsv In w.SheetViews 
     wsv.Sheet.Activate 
     w.FreezePanes = False 
    Next 
    activews.Activate 
    set activews = nothing 
Next 

瑞克指出,你不能解凍沒有激活窗口的窗格。但是,您不必撥打ActiveWindow

+0

好吧,我執行的是有凍結的窗格在紙張上排序的過程,如果是它拋出一個錯誤凍結 - 所以我必須解凍它。有沒有辦法解凍它並返回到之前活動的窗口?編輯:沒關係,你的代碼這樣做。一會兒。 – KaliMa

+0

實際上,它不...我把它遺漏了,因爲你不想使用ActiveWindow。如果你想要這樣做,只需將activeWindow首先存儲爲'dim ActiveW as window:set ActiveW = ActiveWindow',然後在最後'activeW.Activate' –

+0

不幸的是我仍然有相同的問題 編輯:忍者' d再次 – KaliMa

1

不幸的是,凍結窗格是一個窗口對象的方法,您要應用它的表單需要是活動表格。 這意味着您必須選擇您想要凍結活動窗口上的窗格的單元格。

0

的代碼添加到工作表的激活事件(例如,這是工作表Sheet1下的代碼)

Option Explicit 
Private Sub Worksheet_Activate() 
    ActiveWindow.FreezePanes = False 
End Sub