我的 Excel 工作簿中的每个工作表都有一个基本文本框。遗憾的是,这些文本框每次的命名都不同(文本框 1、文本框 17 等)。
我有一个代码可以找到文本框 1 并移动它。但是,VBA 中是否有某种方法可以表示“在活动工作表上找到文本框并命名文本框 1”。或者是否有某种方法可以只表示“找到任何文本框并执行操作?”
我无法找到使用 Shapes 对象/方法的正确方法。
Dim ws As Worksheet
Dim txBox As Shape
For Each ws In Worksheets
ws.Activate
Set txBox = ws.Shapes("Text Box 1")
txBox.IncrementLeft 200
Next ws
答案1
此代码将工作簿中的所有文本框移至右侧。
Sub blah()
Dim ws As Worksheet
Dim txBox As Shape
For Each ws In Worksheets
For Each txBox In ws.Shapes
If txBox.Type = msoTextBox Then txBox.IncrementLeft 200
Next txBox
Next ws
End Sub
它遍历Shapes
每个工作表上的集合。然后检查形状是否为文本框,如果是,则移动它。如果这样做,则无需重命名文本框。
答案2
Sub SetTextBoxNames()
Dim shp As Shape
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Shapes.Count <> 0 Then
If ws.Shapes(1).Type = msoTextBox Then 'or = 17
ws.Shapes(1).Name = "TextBox1"
ws.Shapes(1).IncrementLeft 200
End If
End If
Next ws
End Sub