使用VBA检查excel中是否存在命名文本框

时间:2014-02-15 14:06:23

标签: excel vba excel-vba excel-2007

平台:MS Excel 2007(MS Visual Basic 6.0)

我有一些带有不同文本框的excel文件。 所有文本框都是名称。例如TxTbox_AAAA,TxtBox_BBBB 他们中的大多数具有相同数量的具有相同名称的文本框。

我还需要更新文本框内的内容。但就像我说的...一些excel文件不包含文本框。

例如aaa.xls和bbb.xls有TexTbox_AAAA,TextBox_BBBB 和ccc.xls只有TexTbox_AAAA

我的脚本是这样的

xlApp.ActiveSheet.TextBoxes("TextBox_AAAA").Text = TxtAAAA
xlApp.ActiveSheet.TextBoxes("TextBox_BBBB").Text = TxtBBBB

但如果我运行,它将遇到运行时错误'1004': 无法获取Worksheet类的TextBoxes属性

我怀疑它是由于excel没有这个名为“TextBox_BBBB”的文本框

所以如何在xlApp.ActiveSheet.TextBoxes("TextBox_BBBB").Text = TxtBBBB

之前进行检查

要检查此工作表/活动表是否不包含TextBoxes(“TextBox_BBBB”),它是否会执行此步骤?

3 个答案:

答案 0 :(得分:3)

由于 TextBox Shape ,因此这是一种判断特定TextBox是否在活动表上的方法:

Public Function IsItThere(sIn As String) As Boolean
    IsItThere = False
    If ActiveSheet.Shapes.Count = 0 Then Exit Function
    For Each s In ActiveSheet.Shapes
        If s.Name = sIn Then
            IsItThere = True
            Exit Function
        End If
    Next s
End Function

答案 1 :(得分:1)

不确定但是试试这个:

Dim ws as Worksheet
Dim shp as Shape

Set ws = Activesheet '~~> change to suit

For Each shp in ws.Shapes
    If shp.Name = "Textbox_Name" Then
        '~~> your code here
    End If
Next

希望这有帮助

答案 2 :(得分:0)

感谢L42和Gary的学生

我明白了..我应该把

For Each s In xlApp.ActiveSheet.Shapes

而不是

For Each s In ActiveSheet.Shapes

感谢您的帮助! =)