VBA根据他们的位置select形状

如何select单元格"A:Shape.TopLeftCell.Row" = 0中的值的所有形状(数组?范围? 在这里输入图像说明

该arrays应该只包括形状2和3按照上面的图像。

作为一个替代scheme,您可以反转逻辑并按照要求select,然后根据需要将select分配给一个形状范围:

 Sub ShapePicker() Dim s As Shape Dim sr As ShapeRange Dim i As Long i = 1 For Each s In ActiveSheet.Shapes If Cells(s.TopLeftCell.Row, "A").Value = 0 Then s.Select (i = 1) i = i + 1 End If Next s Set sr = Selection.ShapeRange End Sub 

构build满足条件的ShapeRange ,然后selectShapeRange

 Sub ShapePicker() Dim s As Shape, sr As ShapeRange Dim Arr() As Variant Set mycell = Range("A:A").Find(What:=0, After:=Range("A1")) rrow = mycell.Row i = 1 For Each s In ActiveSheet.Shapes If s.TopLeftCell.Row = rrow Then ReDim Preserve Arr(1 To i) Arr(i) = s.Name i = i + 1 End If Next s Set sr = ActiveSheet.Shapes.Range(Arr) sr.Select End Sub