Как я могу программно переименовать текстовое поле ActiveX? Я имею в виду поле (имя) в окне свойств.Программно переименовать текстовое поле activeX "(name)" field
2
A
ответ
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
Ответ 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