文章編號: 291308 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

其他相關資訊

Microsoft 僅提供示範性的程式設計範例,不做任何明示或默示的保證。其中包括 (但不限於) 其適售性與適合某特定用途之默示擔保。本文將假設您已相當熟悉示範所使用的程式設計語言,以及用於建立和偵錯程序的工具。Microsoft 技術支援工程師可以協助說明特定程序的功能,但不會修改這些範例以提供附加功能或建構程序來滿足您的特定需求。 本文中的範例會使用下表中所列的 Visual Basic 方法。
方法             引數
   ------------------------------------------
Activate           none
Cells              rowIndex, columnIndex
Application.Goto   reference, scroll
Offset             rowOffset, columnOffset
Range              cell1
cell1, cell2
Resize             rowSize, columnSize
Select             none
Sheets             index (or sheetName)
Workbooks          index (or bookName)
End                direction
CurrentRegion      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").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",您可以使用下列其中一個範例:
Range("Test").Select
				
Application.Goto "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 方法沒有作用,因為第五列是空白行。下列範例會選取所有儲存格:
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
    						
    您可以使用:
    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 程式的範例程式碼 (機器翻譯)
注意 :本文屬於「快速發佈」文章,係由 Microsoft 技術支援或組織內部直接建立。 本文所包含的資訊是為了回應新問題而依現況提供。 因此為了迅速對外發佈,文章內容可能含有印刷錯誤,而且可能會在不另行通知的情況下進行修改。 如需其他考量事項,請參閱使用規定

屬性

文章編號: 291308 - 上次校閱: 2013年12月6日 - 版次: 2.0
這篇文章中的資訊適用於:
  • Microsoft Office Excel 2003
  • Microsoft Office Excel 2007
  • Microsoft Excel 2010
關鍵字:?
kbautomation kbmacro kbdtacode kbhowto kbprogramming KB291308
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com