您目前已離線,請等候您的網際網路重新連線

如何藉由使用 Excel 中的 Visual Basic 程序選取儲存格/範圍

Office 2003 支援已結束

Microsoft 於 2014 年 4 月 8 日結束對 Office 2003 的支援。此變更已影響您的軟體更新和安全性選項。 瞭解這對您的意義為何且如何持續受保護。

其他相關資訊
Microsoft 僅提供示範性的程式設計範例,不做任何明示或默示的保證。其中包括 (但不限於) 其適售性與適合某特定用途之默示擔保。本文將假設您已相當熟悉示範所使用的程式設計語言,以及用於建立和偵錯程序的工具。Microsoft 技術支援工程師可以協助說明特定程序的功能,但不會修改這些範例以提供附加功能或建構程序來滿足您的特定需求。 本文中的範例會使用下表中所列的 Visual Basic 方法。
方法             引數   ------------------------------------------Activate           noneCells              rowIndex, columnIndexApplication.Goto   reference, scrollOffset             rowOffset, columnOffsetRange              cell1cell1, cell2Resize             rowSize, columnSizeSelect             noneSheets             index (or sheetName)Workbooks          index (or bookName)End                directionCurrentRegion      none				
本文中的範例會使用下表中的屬性。
屬性         用途   ---------------------------------------------------------------------ActiveSheet      指定使用中的工作表ActiveWorkbook   指定使用中的活頁簿Columns.Count    計算指定項目中的欄數Rows.Count       計算指定項目中的列數Selection        參照目前的選取範圍				

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").ActivateActiveSheet.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").ActivateActiveSheet.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").ActivateActiveSheet.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").ActivateActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select				

7:如何在使用中的工作表上選取名稱範圍

若要在使用中的工作表上選取名稱範圍 "Test",您可以使用下列其中一個範例:
Range("Test").Select				
Application.Goto "Test"				

8:如何在相同的活頁簿中選取另一個工作表上的名稱範圍

若要在相同的活頁簿中選取另一個工作表上的名稱範圍 "Test",您可以使用下列範例:
Application.Goto Sheets("Sheet1").Range("Test")				
或者,您可以啟動工作表,然後使用上述的方法 7 來選取名稱範圍:
Sheets("Sheet1").ActivateRange("Test").Select				

9: 如何在不同的活頁簿中選取工作表上的名稱範圍

若要在不同的活頁簿中選取工作表上的名稱範圍 "Test",您可以使用下列範例:
Application.Goto _Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")				
或者,您可以啟動工作表,然後使用上述的方法 7 來選取名稱範圍:
Workbooks("BOOK2.XLS").Sheets("Sheet2").ActivateRange("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").ActivateActiveSheet.Range("Test").Offset(4, 3).Select				

13:如何選取指定範圍和調整選取範圍大小

若要選取命名範圍 "Database",然後將選取範圍延伸五列,您可以使用下列範例:
Range("Database").SelectSelection.Resize(Selection.Rows.Count + 5, _Selection.Columns.Count).Select				

14:如何選取指定範圍、進行位移,然後調整大小

若要選取位於命名範圍 "Database" 下方四列和右邊三欄的範圍,並包括大於命名範圍兩列和一欄,您可以使用下列範例:
Range("Database").SelectSelection.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:QuantityA2:a       B2:$10      C2: 5A3:b       B3:C3: 10A4:c       B4:$10      C4: 5A5: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 方法沒有作用,因為第五列是空白行。下列範例會選取所有儲存格:
lastCol = ActiveSheet.Range("a1").End(xlToRight).ColumnlastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).RowActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select				
或者				
lastCol = ActiveSheet.Range("a1").End(xlToRight).ColumnlastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).RowActiveSheet.Range("a1:" & _ActiveSheet.Cells(lastRow, lastCol).Address).Select				

22. 如何選取不同長度的多個非連續欄

若要選取不同長度的多個非連續欄,請使用下列範例資料表和巨集範例:
A1:1  B1:1  C1:1  D1: 1A2:2  B2:2  C2:2  D2: 2A3:3  B3:3  C3:3  D3: 3A4:B4:4  C4:4  D4: 4A5: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						
    您可以使用:
    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"。
参考

如需有關如何使用本文中範例程式碼的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
290140如何從知識庫文章中執行 Office XP 程式的範例程式碼 (機器翻譯)
OfficeKBHowTo howto contiguous how to discontiguous non-contiguous nonadjacent non-adjacent  XL2003 XL2007 XL2010
注意 :本文屬於「快速發佈」文章,係由 Microsoft 技術支援或組織內部直接建立。 本文所包含的資訊是為了回應新問題而依現況提供。 因此為了迅速對外發佈,文章內容可能含有印刷錯誤,而且可能會在不另行通知的情況下進行修改。 如需其他考量事項,請參閱使用規定
內容

文章識別碼:291308 - 最後檢閱時間:12/06/2013 14:00:00 - 修訂: 2.0

  • Microsoft Office Excel 2003
  • Microsoft Office Excel 2007
  • Microsoft Excel 2010
  • kbautomation kbmacro kbdtacode kbhowto kbprogramming KB291308
意見反應