选择单元格中的所有形状

Hol*_*ola 2 excel vba

我需要选择给定单元格中的所有形状。我写了这段代码,但它生成错误。

Dim sh as shape
For Each sh In ActiveSheet.Shapes
If Not Intersect(Range("B2"), sh.TopLeftCell) Is Nothing Then
    sh.SelectAll   'Error
End If
Next sh
Run Code Online (Sandbox Code Playgroud)

有什么建议么?

Dar*_*ook 5

SelectAll将选择工作表上的所有形状。为此,您可以使用: ActiveSheet.Shapes.SelectAll.

要选择特定形状,您需要选择它们而不替换以前的选择。

Shape.Select有一个可选参数Replace

(仅与纸张一起使用)。如果为 True,则用指定对象替换当前选择。如果为 False,则扩展当前选择以包括任何先前选择的对象和指定的对象。

您需要做的就是循环浏览形状并将它们添加到选择中(如果它们位于 cell 中)B2

Sub Test()

    Dim sh As Shape

    For Each sh In ActiveSheet.Shapes
        If Not Intersect(Range("B2"), sh.TopLeftCell) Is Nothing Then
            sh.Select False
        End If
    Next sh

End Sub
Run Code Online (Sandbox Code Playgroud)