共用方式為


Excel) (Shapes.Range 屬性

會傳回 ShapeRange 物件,代表 Shapes 集合中的圖形子集合。

語法

運算式範圍 (索引)

expression 代表 Shapes 物件的變數。

參數

名稱 必要/選用 資料類型 描述
Index 必要 Variant 要包含在範圍中的個別圖案。 可以是指定圖案索引編號的整數、指定圖案名稱的字串,或者是整數陣列或字串陣列。

註解

雖然您可以使用 Range 屬性傳回任意數目的圖案,但如果您只想要傳回集合的單一成員,則使用 Item 方法會比較簡單。 例如, Shapes(1)是比 Shapes.Range(1)簡單。

若要指定 索引 的整數或字串陣列,您可以使用 Array 函數。 例如,下列指令會傳回 name 所指定的兩個圖形。

 Dim arShapes() As Variant 
 Dim objRange As Object 
 arShapes = Array("Oval 4", "Rectangle 5") 
 Set objRange = ActiveSheet.Shapes.Range(arShapes)

在 Microsoft Excel 中,無法使用此屬性傳回包含工作表上所有 Shape 物件的 ShapeRange 物件。 請改用下列程式碼。

 Worksheets(1).Shapes.SelectAll ' select all shapes set sr = Selection.ShapeRange ' create ShapeRange

範例

這個範例會設定 myDocument 上第一個圖案及第三個圖案的填滿圖樣。

Set myDocument = Worksheets(1) 
myDocument.Shapes.Range(Array(1, 3)) _ 
 .Fill.Patterned msoPatternHorizontalBrick

本範例會設定 myDocument上名為 Oval 4 和 Rectangle 5 之圖案的填滿圖樣。

Dim arShapes() As Variant 
Dim objRange As Object 
Set myDocument = Worksheets(1) 
arShapes = Array("Oval 4", "Rectangle 5") 
Set objRange = myDocument.Shapes.Range(arShapes) 
objRange.Fill.Patterned msoPatternHorizontalBrick

這個範例會設定 myDocument 上第一個圖案的填滿圖樣。

Set myDocument = Worksheets(1) 
Set myRange = myDocument.Shapes.Range(1) 
myRange.Fill.Patterned msoPatternHorizontalBrick

這個範例會先建立包含 myDocument 上所有快取圖案的陣列,並用該陣列定義圖案範圍,然後將該範圍內的所有圖案水平均分。

Set myDocument = Worksheets(1) 
With myDocument.Shapes 
 numShapes = .Count 
 If numShapes > 1 Then 
 numAutoShapes = 1 
 ReDim autoShpArray(1 To numShapes) 
 For i = 1 To numShapes 
 If .Item(i).Type = msoAutoShape Then 
 autoShpArray(numAutoShapes) = .Item(i).Name 
 numAutoShapes = numAutoShapes + 1 
 End If 
 Next 
 If numAutoShapes > 1 Then 
 ReDim Preserve autoShpArray(1 To numAutoShapes) 
 Set asRange = .Range(autoShpArray) 
 asRange.Distribute msoDistributeHorizontally, False 
 End If 
 End If 
End With

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應