试图给 Excel 中的形状一个 name/title

Trying to give a name/title to a shape in Excel

我正在尝试从另一个工作簿中复制一个子例程,原始工作簿中的子例程可以正常工作,但我的不行。两个子例程的语法相同 子:

Sub FigurMedTittel_Klikk()

    Dim Tittel As String
    
    Tittel = ActiveSheet.Shapes(Application.Caller).Title
    
    Select Case Tittel
    Case "BME"
        Range(Tittel).EntireRow.Hidden = False
        Range("BMA").EntireRow.Hidden = True
        Range("Kompleks").EntireRow.Hidden = True
    Case "BMA"
        Range(Tittel).EntireRow.Hidden = False
        Range("BME").EntireRow.Hidden = True
        Range("Kompleks").EntireRow.Hidden = True
    Case "Kompleks"
        Range(Tittel).EntireRow.Hidden = False
        Range("BMA").EntireRow.Hidden = True
    End Select

End Sub

sub 的要点是通过单击形状来显示或隐藏与形状标题具有相同定义名称的一系列行。问题似乎是我找不到给形状(矩形)一个标题的方法。

当我尝试 运行 代码时,出现错误“Run-time 错误‘-2147352571 (80020005)’”。我是 VBA 的新手,这是我第一次在 Whosebug 中提问。我希望这是可以理解的。

我阅读 .Title 属性 时运气不佳 - 您可以使用形状或其 AlternativeText 中的文本(通过 Excel 绘图工具设置> 格式 > 替代文字)

Sub FigurMedTittel_Klikk()

    Dim shp As Shape, txt
    
    txt = Application.Caller
    
    'or  one of these other methods...
    'Set shp = ActiveSheet.Shapes(Application.Caller)
    'txt = shp.TextFrame2.TextRange.Text 
    'txt = shp.AlternativeText
    
    For Each r In Array("BME.", "BMA.", "Kompleks.")
        Range(Replace(r, ".", "")).EntireRow.Hidden = (txt <> r)
    Next r
     
End Sub

我稍微修改了一下,现在可以用了。我认为问题是不再可能给形状一个标题。新子程序:

Sub FigurMedTittel_Klikk()

Dim Tittel As String
Dim RowTittel As String
Tittel = ActiveSheet.Shapes(Application.Caller).Name
RowTittel = Replace(Tittel, ".", "") 

Select Case Tittel
Case "BME." 
    Range(RowTittel).EntireRow.Hidden = False
    Range("BMA").EntireRow.Hidden = True
    Range("Kompleks").EntireRow.Hidden = True
Case "BMA."
    Range(RowTittel).EntireRow.Hidden = False
    Range("BME").EntireRow.Hidden = True
    Range("Kompleks").EntireRow.Hidden = True
Case "Kompleks."
    Range(RowTittel).EntireRow.Hidden = False
    Range("BMA").EntireRow.Hidden = True
End Select

结束子