Propriedade Shapes.Range (Excel)
Retorna um objeto ShapeRange que representa um subconjunto das formas em uma coleção Shapes.
Sintaxe
expressão. Intervalo (Índice)
expressão Uma variável que representa um objeto Formas.
Parâmetros
Nome | Obrigatório/Opcional | Tipo de dados | Descrição |
---|---|---|---|
Índice | Obrigatório | Variant | As formas individuais a serem incluídas no intervalo. Pode ser um número inteiro que especifica o número de índice da forma, uma cadeia de caracteres que especifica o nome da forma ou uma matriz que contém as cadeias de caracteres ou números inteiros. |
Comentários
Embora você possa usar a propriedade Range para retornar qualquer número de formas, é mais simples usar o método Item se você quiser retornar apenas um único membro da coleção. Por exemplo, Shapes(1)
é mais simples do que Shapes.Range(1)
.
Para especificar uma matriz de números inteiros ou cadeias de caracteres para o índice, você pode usar a função Array. Por exemplo, a instrução a seguir retorna duas formas especificadas por nome.
Dim arShapes() As Variant
Dim objRange As Object
arShapes = Array("Oval 4", "Rectangle 5")
Set objRange = ActiveSheet.Shapes.Range(arShapes)
No Microsoft Excel, você não pode usar esta propriedade para retornar um objeto ShapeRange com todos os objetos Shape em uma planilha. Em vez disso, use o código a seguir.
Worksheets(1).Shapes.SelectAll ' select all shapes set sr = Selection.ShapeRange ' create ShapeRange
Exemplo
Este exemplo define o padrão de preenchimento para as formas um e três de myDocument.
Set myDocument = Worksheets(1)
myDocument.Shapes.Range(Array(1, 3)) _
.Fill.Patterned msoPatternHorizontalBrick
Este exemplo define o padrão de preenchimento para as formas chamadas Oval 4 e Rectangle 5 no myDocument.
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
Este exemplo define o padrão de preenchimento para a forma um em myDocument.
Set myDocument = Worksheets(1)
Set myRange = myDocument.Shapes.Range(1)
myRange.Fill.Patterned msoPatternHorizontalBrick
Este exemplo cria uma matriz que contém todas as AutoFormas de myDocument, usa essa matriz para definir um intervalo de formas e distribui todas as formas horizontalmente nesse intervalo.
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
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.