以编程方式重命名activeX文本框"(名称)"领域

时间:2015-05-30 17:49:04

标签: excel vba excel-vba

如何以编程方式重命名ActiveX文本框?我在属性窗口中引用(名称)字段。

2 个答案:

答案 0 :(得分:2)

ActiveX文本框可以通过其现有名称引用,也可以作为Shapes collection中的序号引用。

如果您知道文本框当前名为 TextBox1 ,并且您想将其命名为 TextBox99 ,请直接引用它。

With ActiveSheet   '<-reference the worksheet properly!
    .Shapes("TextBox1").Name = "TextBox99"
End With

如果要重命名工作表中的所有文本框,请遍历所有形状。

Dim t As Long, s As Long
With ActiveSheet   '<-reference the worksheet properly!
    For s = 1 To .Shapes.Count
        If CBool(InStr(1, .Shapes(s).Name, "textbox", vbTextCompare)) Then
            t = t + 1
            .Shapes(s).Name = "MyTextBox" & Format(t, "00")
        End If
    Next s
End With

请注意.Shapes集合的索引是从一个,而不是从零开始。根据您要完成的任务,进行错误控制以确保您不会尝试将文本框重命名为已存在的内容,这将是谨慎的。

答案 1 :(得分:1)

Jeeped的回答非常适合Excel,但遗憾的是不适用于Word(我也需要)。所以这里也适用于Word:

Dim shp As InlineShape
On Error Resume Next
    For Each shp In ActiveDocument.InlineShapes
        If Not shp.OLEFormat Is Nothing And _
            shp.OLEFormat.Object.Name = "TextBox1" Then
        shp.OLEFormat.Object.Name = "TextBox99"
        End If
    Next
On Error GoTo -1