CorelDraw选择集合中的特定形状

时间:2017-05-24 18:39:41

标签: vba coreldraw

我试图在我当前的工作系统中构建一个小的嵌套函数。我遇到的问题是,当我将第三个形状添加到集合中并尝试根据添加到集合中的先前形状来定位它时,它仍然基于第一个形状定位它。我最终得到的是原始位置的原件和堆叠在一起的副本。

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 个答案:

答案 0 :(得分:1)

您将对象设置为彼此相等,并且它们在内存中相互引用。实际上,您将对象加倍并且使用了两倍的内存。

Set将对象设置为等于您想要的对象的引用。这是一个例子。

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将对象设置为等于您想要的对象的值。

尝试

Set sA = new Shape
Let sA = sB 

而不是

Set sA = sB

如果这不起作用,您可能必须为要使用的每个形状创建属性或变量。

Similar Question