HOWTO · VBA
如何在 VBA 中啟用 Excel 工作表
本文幫助您瞭解如何使用 VBA 在 Excel 中啟用工作表。學習各種方法,包括按名稱、索引和變數啟用。透過實用範例和清晰的說明,本指南將提升您的 Excel 技能並簡化您的工作流程。
本頁內容
若要在 Excel VBA 中讓工作表成為目前工作表,請呼叫它的 Activate 方法。例如,Worksheets("Sheet2").Activate 會選取名稱為 Sheet2 的工作表。當程式碼只需要讀取或變更儲存格時,直接參照工作表而不變更作用中工作表,通常會更清楚。
依名稱啟用工作表
在 Worksheets 集合中使用工作表的索引標籤名稱。一個最精簡的 VBA 程序是 Sub ShowSummary(): Worksheets("Summary").Activate: End Sub。請將 Summary 換成確切的索引標籤名稱,包括空格。此集合中的名稱是可見的工作表名稱,而不是工作表的 VBA 程式碼名稱。成員名稱是 Activate,而用於工作表參照的物件型別是 Worksheet。
這個小型 Python 模型示範了如何依索引標籤名稱查閱工作表並讀取儲存格的值:
worksheets = {
"Summary": {"A1": "Ready"},
"Archive": {"A1": "Saved"},
}
selected = worksheets["Summary"]
print(selected["A1"])
Ready
此模型說明了依名稱選取的方式;在 Excel VBA 中,請使用上方的 Worksheets("Summary").Activate 陳述式。活頁簿中必須包含具有該確切索引標籤名稱的工作表。
當目標可能不屬於包含巨集的活頁簿時,請以活頁簿限定集合:Workbooks("Reports.xlsx").Worksheets("Summary").Activate。活頁簿必須已開啟,且其名稱必須與開啟的活頁簿相符。這比依賴恰好處於作用中的任何活頁簿更清楚。
依索引啟用工作表
工作表也可以依其位置選取:Worksheets(2).Activate。索引從一開始,因此 Worksheets(1) 指的是該活頁簿 Worksheets 集合中的第一個工作表。索引在依順序處理工作表時很有用,但在插入、刪除或移動工作表之後,索引可能會指向不同的工作表。當工作表的身分比其位置更重要時,請使用名稱。
以 ActiveSheet 參照作用中工作表
ActiveSheet 指的是目前在 Excel 中選取的工作表。例如,ActiveSheet.Range("A1").Value = "Ready" 會寫入該工作表的儲存格 A1。未限定的 Range("A1") 在工作表內容中也會使用作用中工作表,因此它取決於 Excel 目前的選取範圍。這種依賴關係可能會在其他動作變更作用中工作表時,使程序影響到錯誤的工作表。當目標已知時,請優先使用明確的工作表參照。
啟用工作表會變更 Excel 的可見選取範圍;它並非只是編輯該工作表所必需的。像 Worksheets("Summary").Range("A1").Value = "Ready" 這樣的直接參照會明確指出目標。
使用工作表變數
Worksheet 變數會保留對特定工作表的參照,讓後續陳述式可以重複使用它。宣告變數、使用 Set 指派物件,然後呼叫 Activate 或操作它的儲存格。例如,程序的陳述式為 Dim ws As Worksheet、Set ws = ThisWorkbook.Worksheets("Summary") 和 ws.Activate。ThisWorkbook 表示包含 VBA 程式碼的活頁簿;當目標是另一個開啟的活頁簿時,請使用 Workbooks("Reports.xlsx") 參照。
在指派 ws 之後,儲存格操作可以使用 ws.Range("A1").Value = "Ready",而不需啟用工作表。這樣即使使用者變更所選工作表,目標仍然明確。
在迴圈中啟用工作表
當任務確實需要每個工作表依次成為可見時,請迭代 Worksheets 集合。VBA 迴圈可以寫成 Dim ws As Worksheet,接著是 For Each ws In ThisWorkbook.Worksheets、ws.Activate 和 Next ws。請將需要作用中工作表的動作放在迴圈內。Worksheets 不包含圖表工作表;Sheets 則同時包含工作表和圖表工作表,因此僅處理工作表時請使用前者。
對於大多數重複的儲存格操作,啟用是不必要的:請改為在迴圈內放入像 ws.Range("A1").Value = "Ready" 這樣的直接操作。這樣可避免依賴作用中的選取範圍,並讓每個目標都清楚明確。
處理常見的啟用錯誤和限制
名稱或索引必須識別指定活頁簿中的工作表。名稱拼寫錯誤或缺失、活頁簿已關閉,或索引超出範圍,都會使 VBA 回報執行階段錯誤。請檢查活頁簿和索引標籤名稱,並在啟用之前確認目標存在。
隱藏的工作表在保持隱藏狀態時無法啟用。請先讓它變為可見,例如使用 Worksheets("Summary").Visible = xlSheetVisible,然後在使用者需要看到它時將其啟用。深度隱藏的工作表也必須先從 VBA 或 Visual Basic 編輯器變更其可見性,才能啟用。
Excel 在作用中活頁簿內一次只有一個作用中工作表。活頁簿可以包含許多工作表,但啟用另一個工作表會取代目前的作用中工作表。如果目標是更新多個工作表,請在迴圈中逐一處理工作表參照並直接對每個工作表進行操作,而不是試圖讓多個工作表同時保持作用中。