CorelDraw selecting specific shapes in a collection

1k Views Asked by At

I'm trying to build a small nesting Function inside of my current working system. What I am having trouble with is that when I add the third shape to the collection and try to position it based on the previous shape added to the collection, it still positions it based on the very first shape. What I end up with is the original in the original position and the copies stacked on top of one another.

Function ArrangeImages(ByRef scol1 As Collection, ByRef sA, sB As Shape)
Dim i, ii As Long

i = scol1.Count
ii = i - 1

If i = 1 Then

Set sB = scol1.Item(i)

End If

If scol1.Count > 1 Then

Set sA = scol1.Item(ii)
Set sB = scol1.Item(i)

sB.SetPosition sA.PositionX, sA.PositionY + (sA.SizeHeight / 2) + 
(sB.SizeHeight / 2) + 0.15
End If

End Function
1

There are 1 best solutions below

4
On

You are setting the objects equal to each other and they reference each other in memory. In fact, you are doubling the object and using up twice as much memory.

Set sets an object equal to the reference of the object you want it to be. Here is an example.

Public Sub test()

    Dim s As Worksheet
    Dim s2 As Worksheet

    Set s = Application.Workbooks.Add().Worksheets.Add
    s.Name = "one"
    Set s2 = s     's and s2 Name = "one"
    s.Name = "two" 's and s2 Name = "two"

End Sub

Let sets an object equal to the value of the object you want it to be.

Try

Set sA = new Shape
Let sA = sB 

Instead of

Set sA = sB

If that doesn't work, you may have to create a property or variable for each of the shapes you are wanting to work with.

Similar Question