from:
https://support.microsoft.com/zh-tw/help/291308/how-to-select-cells-ranges-by-using-visual-basic-procedures-in-excel
1: 如何在使用中的工作表上選取儲存格
若要在使用中的工作表上選取儲存格 D5,您可以使用下列其中一個範例:
ActiveSheet.Cells(5, 4).Select
- 或 -
ActiveSheet.Range("D5").Select
2: 如何在相同的活頁簿中選取另一個工作表上的儲存格
若要在相同的活頁簿中選取另一個工作表上的儲存格 E6,您可以使用下列其中一個範例:
Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)
- 或 -
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))
或者,您可以啟動工作表,然後使用上述的方法 1 來選取儲存格:
Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select
3: 如何在不同的活頁簿中選取工作表上的儲存格
若要在不同的活頁簿中選取工作表上的儲存格 F7,您可以使用下列其中一個範例:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
- 或 -
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")
或者,您可以啟動工作表,然後使用上述的方法 1 來選取儲存格:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select
4: 如何在使用中的工作表上選取儲存格範圍
若要在使用中的工作表上選取範圍 C2:D10,您可以使用下列其中一個範例:
ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select
ActiveSheet.Range("C2:D10").Select
ActiveSheet.Range("C2", "D10").Select
5: 如何在相同的活頁簿中選取另一個工作表上的儲存格範圍
若要在相同的活頁簿中選取另一個工作表上的範圍 D3:E11,您可以使用下列其中一個範例:
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")
或者,您可以啟動工作表,然後使用上述的方法 4 來選取範圍:
Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select
6: 如何在不同的活頁簿中選取工作表上的儲存格範圍
若要在不同的活頁簿中選取工作表上的範圍 E4:F12,您可以使用下列其中一個範例:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")
或者,您可以啟動工作表,然後使用上述的方法 4 來選取範圍:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select
7: 如何在使用中的工作表上選取具名的範圍
若要在使用中的工作表上選取具名範圍 "Test",您可以使用下列其中一個範例:
8: 如何在相同的活頁簿中選取另一個工作表上的具名範圍
若要在相同的活頁簿中選取另一個工作表上的具名範圍 "Test",您可以使用下列範例:
Application.Goto Sheets("Sheet1").Range("Test")
或者,您可以啟動工作表,然後使用上述的方法 7 來選取具名範圍:
Sheets("Sheet1").Activate
Range("Test").Select
9: 如何在不同的活頁簿中選取工作表上的具名範圍
若要在不同的活頁簿中選取工作表上的具名範圍 "Test",您可以使用下列範例:
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")
或者,您可以啟動工作表,然後使用上述的方法 7 來選取具名範圍:
Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select
10: 如何選取相對於使用中儲存格的儲存格
若要選取位於使用中儲存格下方五列和左邊四欄之間的儲存格,您可以使用下列範例:
ActiveCell.Offset(5, -4).Select
若要選取位於使用中儲存格上方兩列和右邊三欄之間的儲存格,您可以使用下列範例:
ActiveCell.Offset(-2, 3).Select
注意 如果嘗試選取「不在工作表之內」的儲存格,將會發生錯誤。 如果使用中儲存格是在欄 A 到 D 之間,則上面的第一個範例將會傳回錯誤,因為向左移動四欄會讓使用中儲存格置於無效的儲存格位址。
11: 如何選取相對於另一個 (不是使用中) 儲存格的儲存格
若要選取位於儲存格 C7 下方五列和右邊四欄之間的儲存格,您可以使用下列其中一個範例:
ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select
12: 如何選取從指定範圍位移的儲存格範圍
若要選取與具名範圍 "Test" 大小相同,但向下移動四列和向右移動三欄的儲存格範圍,您可以使用下列範例:
ActiveSheet.Range("Test").Offset(4, 3).Select
如果具名範圍是在另一個 (不是使用中) 工作表上,請先啟動該工作表,然後使用下列範例來選取範圍:
Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select
13: 如何選取指定範圍和調整選取範圍大小
若要選取具名範圍 "Database",然後將選取範圍延伸五列,您可以使用下列範例:
Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
Selection.Columns.Count).Select
14: 如何選取指定範圍、進行位移,然後調整大小
若要選取位於具名範圍 "Database" 下方四列和右邊三欄的範圍,並包括大於具名範圍兩列和一欄,您可以使用下列範例:
Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
Selection.Columns.Count + 1).Select
15: 如何選取兩個指定範圍以上的聯集
若要選取兩個具名範圍 "Test" 和 "Sample" 的聯集 (亦即合併區域),您可以使用下列範例:
Application.Union(Range("Test"), Range("Sample")).Select
請注意,這兩個範圍都必須在相同的工作表中,此範例才能正常運作。 另請注意,Union 方法無法同時在不同工作表之間使用。 例如,這一行沒有問題
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))
但這一行
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))
會傳回錯誤訊息:
Union method of application class failed (應用程式類別的 Union 方法失敗)
16: 如何選取兩個指定範圍以上的交集
若要選取兩個具名範圍 "Test" 和 "Sample" 的交集,您可以使用下列範例:
Application.Intersect(Range("Test"), Range("Sample")).Select
請注意,這兩個範圍都必須在相同的工作表中,此範例才能正常運作。 本文中的範例 17-21 會參照下列範例資料集。 每一個範例都會陳述在範例資料中所選取的儲存格範圍。
A1: Name B1: Sales C1: Quantity
A2: a B2: $10 C2: 5
A3: b B3: C3: 10
A4: c B4: $10 C4: 5
A5: B5: C5:
A6: Total B6: $20 C6: 20
17: 如何選取連續資料欄的最後一個儲存格
若要選取連續欄中的最後一個儲存格,請使用下列範例:
ActiveSheet.Range("a1").End(xlDown).Select
當這個程式碼與範例資料表搭配使用時,會選取儲存格 A4。
18: 如何選取連續資料欄下方的空白儲存格
若要選取連續儲存格範圍下面的儲存格,請使用下列範例:
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select
當這個程式碼與範例資料表搭配使用時,會選取儲存格 A5。
19: 如何在欄中選取連續儲存格的整個範圍
若要在欄中選取連續儲存格範圍,請使用下列其中一個範例:
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
- 或 -
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
End(xlDown).Address).Select
當這個程式碼與範例資料表搭配使用時,會選取儲存格 A1 到 A4。
20: 如何在欄中選取非連續儲存格的整個範圍
若要選取非連續的儲存格範圍,請使用下列其中一個範例:
ActiveSheet.Range("a1",ActiveSheet.Range("a65536").End(xlUp)).Select
- 或 -
ActiveSheet.Range("a1:" & ActiveSheet.Range("a65536"). _
End(xlUp).Address).Select
當這個程式碼與範例資料表搭配使用時,會選取儲存格 A1 到 A6。
21: 如何選取矩形儲存格範圍
若要選取某儲存格四周的矩形儲存格範圍,請使用 CurrentRegion 方法。 透過 CurrentRegion 方法選取的範圍,是以任何組合的空白列與空白欄為邊界的區域。 下列範例說明如何使用 CurrentRegion 方法:
ActiveSheet.Range("a1").CurrentRegion.Select
這個程式碼會選取儲存格 A1 到 C4。 下面列出選取相同儲存格範圍的其他範例:
ActiveSheet.Range("a1", _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select
- 或 -
ActiveSheet.Range("a1:" & _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select
在某些情況下,您可能需要選取儲存格 A1 到 C6。 在此範例中,CurrentRegion 方法沒有作用,因為第 5 列是空白行。 下列範例會選取所有儲存格:
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select
- 或 -
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1:" & _
ActiveSheet.Cells(lastRow, lastCol).Address).Select
22: 如何選取不同長度的多個非連續欄
若要選取不同長度的多個非連續欄,請使用下列範例資料表和巨集範例:
A1: 1 B1: 1 C1: 1 D1: 1
A2: 2 B2: 2 C2: 2 D2: 2
A3: 3 B3: 3 C3: 3 D3: 3
A4: B4: 4 C4: 4 D4: 4
A5: B5: 5 C5: 5 D5:
A6: B6: C6: 6 D6:
StartRange = "A1"
EndRange = "C1"
Set a = Range(StartRange, Range(StartRange).End(xlDown))
Set b = Range(EndRange, Range(EndRange).End(xlDown))
Union(a,b).Select
當這個程式碼與範例資料表搭配使用時,會選取儲存格 A1:A3 和 C1:C6。
範例的注意事項
- 通常可以省略 ActiveSheet 屬性,因為如果未命名特定工作表,則會隱含該屬性。 例如,與其使用
ActiveSheet.Range("D5").Select
您可以使用:
- 通常也可以省略 ActiveWorkbook 屬性。 除非已命名特定活頁簿,否則會隱含使用中的活頁簿。
- 使用 Application.Goto 方法時,當指定的範圍是在另一個 (不是使用中) 工作表的情況下,如果要在 Range 方法內使用兩個 Cells 方法,則每次都必須包括 Sheets 物件。 例如:
Application.Goto Sheets("Sheet1").Range( _
Sheets("Sheet1").Range(Sheets("Sheet1").Cells(2, 3), _
Sheets("Sheet1").Cells(4, 5)))
- 針對引號中的任何項目而言 (例如,具名範圍 "Test"),您也可以使用其值是文字字串的變數。 例如,與其使用
ActiveWorkbook.Sheets("Sheet1").Activate
您可以使用
ActiveWorkbook.Sheets(myVar).Activate
其中 myVar 的值是 "Sheet1"。