Expand Minimize

Shape.Layer Property (Visio)

Returns the layer to which a shape is assigned. Read-only.

Version Added: Visio 4.0

expression .Layer(Index)

expression A variable that represents a Shape object.




Data Type





The ordinal of the layer to get.

Return Value


If a shape is assigned to three layers, the valid indexes that can be passed to its Layer property are 1 through 3.

To get the number of layers to which a shape is assigned, use the LayerCount property.

This Microsoft Visual Basic for Applications (VBA) macro shows how to use the Layer property to get a reference to a particular layer. It also uses the LayerCount property to determine the number of layers to which a shape is assigned and the Name property to get the name of the current layer.

Public Sub Layer_Example() 
 Dim vsoPage As Visio.Page 
 Dim vsoShape As Visio.Shape 
 Dim vsoLayers As Visio.Layers 
 Dim vsoLayer As Visio.Layer 
 If ActiveDocument Is Nothing Then 
 Documents.Add ("") 
 End If 
 Set vsoPage = ActivePage 
 If vsoPage Is Nothing Then 
 Set vsoPage = ActiveDocument.Pages(1) 
 End If 
 'Draw a rectangle. 
 Set vsoShape = vsoPage.DrawRectangle(1, 5, 5, 1) 
 'Get the Layers collection. 
 Set vsoLayers = vsoPage.Layers 
 'Create a layer named ExampleLayer1 and add the shape to it. 
 Set vsoLayer = vsoLayers.Add("ExampleLayer1") 
 vsoLayer.Add vsoShape, 1 
 'Create a layer named ExampleLayer2 and add the shape to it. 
 Set vsoLayer = vsoLayers.Add("ExampleLayer2") 
 vsoLayer.Add vsoShape, 1 
 'Verify that the shape has been assigned to 2 layers. 
 Debug.Print "The rectangle is assigned to " & vsoShape.LayerCount & " layers." 
 'Get a reference to the first layer. 
 Set vsoLayer = vsoShape.Layer(1) 
 'Verify by using the Name property. 
 Debug.Print "Current vsoLayer name is """ & vsoLayer.Name & ".""" 
End Sub 

© 2015 Microsoft