使用 VBA 在电子表格中查找并命名文本框

使用 VBA 在电子表格中查找并命名文本框

我的 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

相关内容