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 支援與意見反應。