【问题标题】:VBA: How to perform an action on specific elements of an arrayVBA:如何对数组的特定元素执行操作
【发布时间】:2010-12-15 08:51:50
【问题描述】:

据我了解,在 VBA for PowerPoint 中,此代码仅获取活动窗口中的第一个形状并轻推它:

Set oShape = oSlide.Shapes(1)

oShape.Left = oShape.Left + 5

如果我想微调所有形状,我会为此使用循环。

但是我怎样才能根据它们的数量只获得和微调某些形状呢?

例如,假设我在活动窗口中只有 3 个形状。如果我想轻推形状 1 和形状 3,但我不想触碰形状 2。我该怎么做?

【问题讨论】:

    标签: arrays vba loops powerpoint


    【解决方案1】:

    如果您想按数字指定特定形状,请使用以下内容:

    For Each shapeNum In Array(1, 3, 5, 9, 10)
        Set oShape = oSlide.Shapes(shapeNum)
    
        oShape.Left = oShape.Left + 5
    Next shapeNum
    

    如果你只是想随机移动某些形状,那么使用这个:

    For shapeNum = 1 To oSlide.Shapes.Count
        If Rnd < 0.5 Then ''1 in 2 chance
            Set oShape = oSlide.Shapes(shapeNum)
    
            oShape.Left = oShape.Left + 5
        End If
    Next shapeNum
    

    如果您想要其他内容,请在您的问题中添加详细信息。

    【讨论】:

    • 哇!!!谢谢你,阿特柳斯!你答案的上半部分正是我想知道的。
    • 也感谢您的编辑,Artelius,但您不认为“循环”一词必须保留在标题中吗?许多像我这样的菜鸟都知道循环这个词,但他们可能不知道迭代意味着什么。我自己才知道迭代意味着仅在 3 天前使用循环!
    • 好点,因为这是一个 VBA 问题。这个问题有点难以描述。但我认为您对“迭代”的看法是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 2020-08-21
    • 2022-06-18
    相关资源
    最近更新 更多