使用 VBA 在 Excel 中选择一个形状

Selecting a shape in Excel with VBA

我正在尝试使用 VBA 按名称 select 形状。在我的 sheet 中,我有 10 个形状,名称为 1 到 10,我想要一个特定的形状。出于某种原因,excel select 用我的代码生成的形状似乎不是我告诉它的名称 select 的形状。据我所知,它选择的形状是随机的。这是我的代码(x 值应该检索我从 1 到 10 输入的数字值):

Sub FindTheShape()

Sheets("Fleet 1").Select
Dim x As Long
x = ActiveSheet.Range("$A00").End(xlUp).Value

ActiveSheet.Shapes(x).Select

End Sub

请帮忙,任何想法都非常感谢。

你的 x 给出的是索引号而不是名称,当你的形状被命名为 1 到 10 时,从你的 x 中创建一个字符串:

ActiveSheet.Shapes(CStr(x)).Select

As far as I can tell, the shape that it chooses is random.

发生这种情况是因为当您使用数值时,您实际上指的是 Shapes 集合中某个形状的位置。当您使用字符串值时,您指的是形状的名称。床单也是如此。看我的 answer.

使用此示例代码来选择形状:

Sub FindTheShape()

Dim sht as Worksheet
Set sht = ThisWorkbook.Worksheets("Fleet 1")

Dim sObject as shape
For Each sObject in ActiveSheet.Shapes
    If sObject.Name = "MyRectangle" then
     sObject.Select 
    End If
Next

End Sub