【问题标题】:Vba ArrayList or Array Find methodVba ArrayList 或 Array Find 方法
【发布时间】:2021-12-30 15:31:21
【问题描述】:

我正在通过 excel vba 幻灯片进行操作。我创建了形状(“矩形”、“文本框”),但很难找到合适的索引号来进一步操作它们。我知道我可以通过 Slides(1).Shapes(i) 索引号来触摸它们,因为我从零开始创建 ppt 幻灯片。但我想在创建后立即操作它们。在 Paste 方法中,我发现我可以编写代码 Paste.Select 然后 ActiveWindow.Selection 给我形状。但是我不能用 AddShapes(msoRectangle...)Select 来做到这一点。这就是为什么我想将幻灯片中的所有对象名称带到一个数组列表中,然后使用 Rectangle、TextBox 等单词在该数组中逐步搜索以查看它们。 出于我的好奇心,ArrayList.Contains“TextBox”给出“False”,即使有名为“TextBox 1”的形状。我知道如果我会写“TextBox 1”,它会带来真正的价值。但我需要通过宏来查找(什么:,LookIn),或者像“TextBox *”......我还使用了数组的过滤方法,我也取了另一个数组中的值,但它给出了TypeMismatch 13错误。

Dim shpNameArr As Object
Set shpNameArr = CreateObject("System.Collections.ArrayList")

For each Item in .Slides(1).Shapes
    shpNameArr.Add Item.Name
Next
For Each Item in shpNameArr
    MsgBox Item
Next
For Each Item in shpNameArr
    MsgBox shpNameArr.Contains("TextBox")
    shpNameArrW = Filter(Item,"TextBox")
    MsgBox shpNameArrW
Next

【问题讨论】:

  • Shapes.AddShape() 返回您刚刚添加的形状,因此您可以直接使用它,而无需搜索幻灯片上的形状。 docs.microsoft.com/en-us/office/vba/api/…
  • .Slides(1).AddShape(msoRect...) ……你的意思是这样吗?能不能直接写代码或者如何使用呢?

标签: arrays vba arraylist


【解决方案1】:

Shapes.AddShape() 返回您刚刚添加的形状,因此您可以直接使用它,而无需搜索幻灯片上的形状。

https://docs.microsoft.com/en-us/office/vba/api/powerpoint.shapes.addshape

例如:

Dim shp As Shape
Set shp= Slides(1)Shapes.AddShape(msoRect...)

现在您可以直接使用shp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 2016-07-20
    • 2015-11-10
    • 1970-01-01
    • 2014-09-04
    • 2014-11-13
    • 2013-09-28
    相关资源
    最近更新 更多