如何以编程方式重命名ActiveX文本框?我在属性窗口中引用(名称)字段。
答案 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