【问题标题】:Selecting a shape in Excel with VBA使用 VBA 在 Excel 中选择形状
【发布时间】:2021-08-19 17:56:31
【问题描述】:

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

Sub FindTheShape()

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

ActiveSheet.Shapes(x).Select

End Sub

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

【问题讨论】:

    标签: vba excel shapes


    【解决方案1】:

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

    ActiveSheet.Shapes(CStr(x)).Select
    

    【讨论】:

      【解决方案2】:

      据我所知,它选择的形状是随机的。

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

      【讨论】:

        【解决方案3】:

        使用此示例代码获取选定的形状:

        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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-09-09
          • 2018-08-06
          • 1970-01-01
          • 2014-12-04
          • 2019-02-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多