Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每个循环顺序的VBA_Vba_For Loop_Each_Shape - Fatal编程技术网

每个循环顺序的VBA

每个循环顺序的VBA,vba,for-loop,each,shape,Vba,For Loop,Each,Shape,在VBA中,可以在形状之间循环。例如: For Each shp In slide.Shapes shp.top=0 Next 问题是,哪个参数用于确定循环的顺序,以及如何设置该参数?在OP澄清了他需要从最高到最低循环形状后编辑 您可以使用SortedList对象使用ShapeTop属性作为SortedList键,使用Shape对象本身作为其对应值: Sub Main() Dim shp As Shape Dim j As Long With CreateObjec

在VBA中,可以在形状之间循环。例如:

For Each shp In slide.Shapes
 shp.top=0
Next

问题是,哪个参数用于确定循环的顺序,以及如何设置该参数?

在OP澄清了他需要从最高到最低循环形状后编辑

您可以使用
SortedList
对象使用
Shape
Top
属性作为
SortedList
键,使用
Shape
对象本身作为其对应值:

Sub Main()
    Dim shp As Shape
    Dim j As Long

    With CreateObject("System.Collections.SortedList")
        For Each shp In slide.Shapes
            .Add shp.Top, shp
        Next

        For j = 0 To .Count - 1 'list shapes from the highest to the lowest
            MsgBox .GetByIndex(j).Name & " - " & .getkey(j)
        Next

    End With
End Sub

我在MicroSoft网站上找到了答案:

网站上说“形状在z顺序中的位置对应于形状集合中形状的索引号。

然后,我执行了一个简短的排序例程,根据形状的.top参数设置z顺序位置:

For i = 2 To sld.Shapes.Count
  If sld.Shapes(i).Top < sld.Shapes(i - 1).Top _ 
  and sld.Shapes(i).ZOrderPosition > sld.Shapes(i - 1).ZOrderPosition Then_
  sld.Shapes(i).ZOrder msoSendBackward
Next i
i=2到sld.Shapes.Count的

如果sld.Shapes(i).Topsld.Shapes(i-1).ZOrderPosition_
sld.Shapes(i).ZOrder msoSendBackward
接下来我

在Cymro,我的回答是“很可能是他们的出现顺序”,我可以从我的一些测试中证明这一点。也许我应该明确指出,我所说的出现顺序,是指它们出现的顺序created@Cymro,请参见编辑后的答案,以从最高到最低的形状循环。如果答案中已包含句柄,即:。GetByIndex(j)。因此,您可以键入:For j=0 to.count-1:MakeBold.GetByIndex(j):next。您可以考虑将答案标记为“接受”,谢谢您,如果有2个对象具有相同的垂直位置,则代码失败,这个错误“项目已经被添加”。任何帮助都将不胜感激。