Excel凍結窗口與拆分窗口及取消的15個實例,含用VBA動態與批量凍結所有工作表Sheet
在 excel 中,凍結窗口既可以凍結首行首列又可以凍結任意前幾行前幾列,還可以同時凍結首行和首列、任意前幾行和前幾列。拆分窗口既可把一個表格拆分兩個窗口,又可把它拆分為四個窗口,它與凍結窗口有異曲同工的作用。
如果要動態凍結窗口和批量凍結窗口,需要用VBA(宏)實現。例如:用 VBA 可以實現從一個工作表、多個工作表或一個工作簿所有工作表任意指定單元格或選中單元格處凍結,還可以實現只凍結選擇的全部工作表。
一、Excel凍結窗口
(一)凍結首行
選擇“視圖”選項卡,單擊“凍結窗口”,在彈出的菜單中選擇“凍結首行”,第一行下邊線上出現一條灰線,則首行被凍結,往下拖滑塊往上移數據時,首行始終停在第一行不動;操作過程步驟,如圖1所示:
圖1
(二)凍結首列
當前選項卡為“視圖”,單擊“凍結窗口”,在彈出的選項中選擇“凍結首列”,第一列右邊線上出現一條灰線,則首列被凍結,往右拖滑塊,列往左移動時,首列始終停在第一列不動;操作過程步驟,如圖2所示:
圖2
(三)同時凍結首行與首列
當前為“視圖”選項卡,選中 B2 單元格,單擊“凍結窗口”,在彈出的菜單中,選擇“凍結拆分窗口”,則 A 列右邊線和第一行下邊線都出現一條灰線,則首行和首列同時被凍結;當往上移動數據時,首行不動;當往左移動數據時,首列不動;操作過程步驟,如圖3所示:
圖3
(四)凍結前幾行(前 n 行)
假如要凍結前 4 行和前兩列。選中 A5 單元格,單擊“視圖”選項卡下的“凍結窗口”,然后選擇“凍結拆分窗口”,則第四行下邊線出現一條灰線,前四行都被凍結;當往上移動數據時,前四行始終不動;操作過程步驟,如圖4所示:
圖4
(五)凍結前幾列(前 n 列)
假如要凍結前 2 列。選中 C1 單元格,選擇“視圖”選項卡,點擊“凍結窗口”,然后選擇“凍結拆分窗口”,則第二列右邊線出現一條灰線,前兩列被凍結;當往左移動數據時,前兩列始終不動;操作過程步驟,如圖5所示:
圖5
(六)同時凍結前幾行(前 n 行)和前幾列(前 n 列)
假如要凍結前 5 行和前兩列。選中 C6 單元格,單擊“視圖”選項卡下的“凍結窗口”,然后選擇“凍結拆分窗口”,則 B 列右邊線和第五行下邊線都出現一條灰線,前五行和前兩列都被凍結;當往上移動數據時,前五行始終不動;當往左邊移動數據時,前兩列不動;操作過程步驟,如圖6所示:
圖6
(七)取消凍結
1、選擇“視圖”選項卡,單擊“凍結窗口”,在彈出的選項中,選擇“取消凍結窗口”,則前兩列凍結被取消,其它凍結也是一樣的取消方法;操作過程步驟,如圖7所示:
圖7
2、提示:
A、如果再選擇一種凍結方式(如“凍結首行”后,再選擇另一種凍結方式(如“凍結前幾行”),則“凍結首行”被取消。
B、另外,如果凍結后,“視圖”呈灰色而無法取消,查看是否對工作表設置了保護(方法為:選擇“審閱”,單擊“保護工作表”或“保護工作簿”,Excel2003 在“工具 → 保護”中,如果要求輸入密碼,則設置了保護),如果設置了保護,取消保護就可以取消凍結了。
二、Excel凍結窗口用快捷鍵操作
1、凍結首行。按住 Alt,依次按一次 W、F 和 R,在第一行下邊線上出現一條灰線,把滑塊往下拖,數據往上移動時,第一行始終不動,說明它被凍結;操作過程步驟,如圖8所示:
圖8
2、凍結首列的快捷鍵為 Alt + W + F + C,按鍵方法為:按住 Alt,依次按 W、F 和 C。
3、一次凍結前幾行和前幾列
假如要一次凍結前 5 行和前三列。選中 D6 單元格,按住 Alt,按一次 W,按兩次 F,則第五行下邊線和第三列右邊線都出現一條灰線;當往上移動數據時,前五行始終不動;當往左移動數據時,前三列始終不動;說明前五行和前三列都被凍結;操作過程步驟,如圖9所示:
圖9
三、Excel拆分窗口
(一)拆分為兩個窗口
1、假如要從第 6 行處或第 5 列處拆分為兩個窗口。選中 A6 單元格,選擇“視圖”選項卡,單擊“拆分”,則從第六行起被拆分為第二個窗口,往上拖第二個窗口的滑塊,該窗口也顯了標題行;再次單擊“拆分”,窗口拆分被取消。
2、選中 E1 單元格,單擊“拆分”,則從 E 列起被拆分為第二個窗口,往左移動第二個窗口的滑塊時,第二個窗口也顯示了與第一個窗口一樣的數據;操作過程步驟,如圖10所示:
圖10
(二)拆分為四個窗口
選中 E5 單元格,選擇“視圖”選項卡,單擊“拆分”,則把表格從 E5 處拆分為四個有同樣數據的窗口;操作過程步驟,如圖11所示:
圖11
(三)取消拆分窗口
只需再次單擊“視圖”選項卡下的“拆分”,拆分窗口被取消,圖10已經演示。凍結行列與拆分窗口有異曲同工之妙,但它們一次只能用一個,如果已經用了凍結行列,再用拆分窗口,則凍結行列自動取消;反之亦然。
四、Excel凍結窗口用VBA(宏)
(一)從任意指定單元格處凍結
1、假如要從 B4 單元格處凍結。在 Excel 窗口,按 Alt + F11,切換到 VBA 編輯窗口,單擊“插入”,在彈出的菜單中選擇“模塊”,則新建一個模塊窗口,把以下代碼復制到窗口:
Sub FreezeWindow()
ActiveWindow.FreezePanes = False
Range("B4").Select
ActiveWindow.FreezePanes = True
End Sub
單擊“運行”,在彈出的菜單中選擇“運行子過程/用戶窗體”,則在 B4 處凍結前三行和 A 列,按 Alt + F11,切換回 Excel 窗口,B4 處已經出現兩條相交于它左上角的灰線;操作過程步驟,如圖12所示:
圖12
提示:如果要在其它單元格(如 C8)處凍結,只需把代碼中 B4 改為 C8。
2、代碼說明:
A、Sub 表示子過程(函數),FreezeWindow 為子過程名稱;End Sub 表示子過程結束。
B、ActiveWindow 表示活動窗口,在這里表示 Sheet1;FreezePanes 表示凍結;ActiveWindow.FreezePanes = False 把 ActiveWindow.FreezePanes 設置為 False,表示不凍結 Sheet1。
C、Range("B4").Select 表示選中單元格 B4,Range("B4") 表示引用 B4 單元格,Select 表示選擇。
D、ActiveWindow.FreezePanes = True 把 ActiveWindow.FreezePanes 設置 True,意思凍結 Sheet1,即從 B4 單元格左上角處凍結。
(二)取消凍結
在 Excel 窗口,按 Alt + F11,切換到 VBA 編輯窗口,把以下代碼:
Sub CancelFreezeWindow()
ActiveWindow.FreezePanes = False
End Sub
復制到“工作簿1 - 模塊1(代碼)”(如果沒有該窗口,單擊“插入”,選擇“模塊”創建),按 F5 運行代碼,再按 Alt + F11,切換回 Excel 窗口,B4 單元格左上角的兩條灰線已不在,說明取消了凍結;操作過程步驟,如圖13所示:
圖13
(三)批量凍結窗口與取消凍結
1、從任意指定單元格處批量凍結所有工作表
A、假如要把每個工作表從 B4 處(B4 可任意替換為其它單元格)凍結窗口。在 Excel 窗口,按 Alt + F11,切換到 VBA 窗口,單擊“插入”,在彈出的選項中選擇“模塊”,新建一個模塊窗口,把以下代碼:
Sub FreezeWindows()
Dim ws As Worksheet
Application.ScreenUpdating = False
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
Range("B4").Select
ActiveWindow.FreezePanes = Not ActiveWindow.FreezePanes
Next
Application.ScreenUpdating = True
End Sub
復制到該窗口,按 F5 運行代碼,按 Alt + F11,切換到 Excel 窗口,Sheet1 和 Sheet2 兩個工作表都在 B4 處凍結了窗口;再按 Alt + F11,切換到 VBA 窗口,再按 F5 運行代碼,再切換回 Excel 窗口,所有工作表的凍結窗口被取消;操作過程步驟,如圖14所示:
圖14
提示:如果要在每個工作表的當前選中單元格處凍結窗口,不要 Range("B4").Select 這句即可。
B、代碼說明:
(1)Dim ws As Worksheet 意思是把 ws 定義為 Worksheet 對象,即定義為一個工作表。
(2)Application.ScreenUpdating 用于設置是否允許屏幕刷新,設置為 False 不允許,設置為 True 允許。
(3)For Each ...Next 是一個循環語句;ActiveWorkbook 表示當前工作簿,Worksheets 表示當前工作簿的所有工作表;For Each ws In ActiveWorkbook.Worksheets 的意思是,逐個遍歷當前工作簿的每個工作表,且用 ws 表示當前工作表,例如第一次 ws 代表 Sheet1、第二次 ws 代表 sheet2,其它的以此類推。
(4)ws.Activate 表示把工作表設置為活動工作表(即當前工作表)。
(5)Range("B4").Select 意思是選中當前工作表的 B4 單元格,Range函數用于引用單元格。
(6)ActiveWindow.FreezePanes 表示把活動窗口(即當前窗口)是否為設置為凍結,把它設置 True,則凍結;把它設置為 False,則不凍結;把它設置為 Not ActiveWindow.FreezePanes,表示取與 ActiveWindow.FreezePanes 相反的值,如果 ActiveWindow.FreezePanes 的值為 True,則取 False;如果 ActiveWindow.FreezePanes 的值為 False,則取 True。
2、只凍結選中的工作表
A、以在所有選中工作表中的 B4 單元格處凍結為為例。在 Excel 窗口,當前工作表為 Sheet1,按住 Shift,單擊 Sheet2,把 Sheet1 和 Sheet2 都選中;按 Alt + F11,切換到 VBA 編輯窗口,單擊“插入”,選擇“模塊”,新建一個模塊窗口,把以下代碼:
Sub FreezeWindows()
Dim selWs As Worksheet
For Each selWs In ActiveWindow.SelectedSheets
selWs.Activate
Range("B4").Select
ActiveWindow.FreezePanes = Not ActiveWindow.FreezePanes
Next
End Sub
復制到模塊窗口,按 F5 運行,按 Alt + F11,切換回 Excel 窗口,Sheet1 和 Sheet2 都被凍結,Sheet3 沒有被凍結;操作過程步驟,如圖15所示:
圖15
提示:如果要求從每個選中工作表的選中單元格處凍結,把 Range("B4").Select 去掉即可。
B、代碼說明:
代碼與上一例基本一樣,只是把遍歷所有工作表改為遍歷選中工作表,即把 For Each ws In ActiveWorkbook.Worksheets 改為 For Each selWs In ActiveWindow.SelectedSheets,SelectedSheets 表示所有選中工作表。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。