gpt4 book ai didi

excel - 检查形状是否为组(GroupItems 引发错误)

转载 作者:行者123 更新时间:2023-12-04 21:53:21 25 4
gpt4 key购买 nike

我在 Word 中尝试以下代码:

Sub MyMacro()

Dim sh1 As Shape

For Each sh1 In ActiveDocument.Shapes
If sh1.GroupItems.Count > 0 Then
Debug.Print sh1.Name + " is a group!"
Else: Debug.Print sh1.Name + " is not a group!"
End If
Next

End Sub

对于实际的分组形状,它可以工作,但是当形状不是一个组时,我得到一个错误:

Run-time error '-2147024891 (80070005)': This member can only be accessed for a group



除了使用 On Error 外,我如何检查对象是否为组?

最佳答案

到目前为止,我在这里得到了两个非常全面的答案,我感谢他们的作者。但是我想避免On Error捕捉,不想依赖形状的名字,也不想做复杂的事情,比如构建我自己的 dll。 Cindy 的解决方案 InStr(rng.WordOpenXML, "<wpg:wgp>")看起来最接近,但由于某种原因,这段代码在我的文档中不起作用:<wpg:wgp>找到任何形状,分组与否。
因此,我决定发布我自己的解决方案,该解决方案非常简单,似乎适用于所有情况。我们只需要使用.AutoShapeType属性(property)(@SMeaden 在评论中指出的):

Sub MyMacro()

Dim sh1 As Shape

For Each sh1 In ActiveDocument.Shapes
If sh1.AutoShapeType = msoShapeMixed Then
Debug.Print sh1.Name + " is a group!"
Else: Debug.Print sh1.Name + " is not a group!"
End If
Next

End Sub

关于excel - 检查形状是否为组(GroupItems 引发错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50070387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com