Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用VBA检查excel中是否存在命名文本框_Vba_Excel_Excel 2007 - Fatal编程技术网

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

使用VBA检查excel中是否存在命名文本框,vba,excel,excel-2007,Vba,Excel,Excel 2007,平台:MS Excel 2007(MS Visual Basic 6.0) 我有几个excel文件,里面有不同的文本框。 所有的文本框都是名字。例如TxTbox_AAAA、TxTbox_bbbbb 它们中的大多数都有相似数量的同名文本框 我还需要更新文本框中的内容。但是就像我说的。。。某些excel文件不包含文本框 例如,aaa.xls和bbb.xls有文本框_AAAA,文本框_BBBB 和ccc.xls只有文本框_AAAA 我的剧本是这样的 xlApp.ActiveSheet.TextBoxe

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

我有几个excel文件,里面有不同的文本框。 所有的文本框都是名字。例如TxTbox_AAAA、TxTbox_bbbbb 它们中的大多数都有相似数量的同名文本框

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

例如,aaa.xls和bbb.xls有文本框_AAAA,文本框_BBBB 和ccc.xls只有文本框_AAAA

我的剧本是这样的

xlApp.ActiveSheet.TextBoxes("TextBox_AAAA").Text = TxtAAAA
xlApp.ActiveSheet.TextBoxes("TextBox_BBBB").Text = TxtBBBB
但如果我运行,它将遇到运行时错误“1004”: 无法获取工作表类的TextBox属性

我怀疑这是因为excel没有名为“textbox_BBBB”的文本框

那么,我如何在
xlApp.ActiveSheet.textboxs(“TextBox_bbbbbb”).Text=txtbbbbbb之前打勾呢


要检查此工作表/活动表是否不包含文本框(“文本框”),它将不执行此步骤?

因为文本框是一个形状,这里有一种方法可以判断特定的文本框是否在活动表上:

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

由于文本框是一个形状,因此有一种方法可以判断特定文本框是否在活动表上:

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
不确定,但请尝试以下方法:

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
希望这有帮助

不确定,但请尝试以下方法:

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

希望这有帮助

谢谢L42和Gary的学生

我明白了。。我应该把

For Each s In xlApp.ActiveSheet.Shapes
而不是

For Each s In ActiveSheet.Shapes
只有


谢谢你的帮助!!!=)

谢谢L42和Gary的学生

我明白了。。我应该把

For Each s In xlApp.ActiveSheet.Shapes
而不是

For Each s In ActiveSheet.Shapes
只有


谢谢你的帮助!!!=)

嗯。。。我不太熟悉在脚本中添加公共功能。。。所以我可以复制并粘贴这个函数,然后将值编辑到我的脚本中?你可以像在L42的Posthmm中那样修改它。。。我不太熟悉在脚本中添加公共功能。。。因此,我可以复制并粘贴此函数,并将值编辑到我的脚本中?您可以对其进行调整,因为L42的邮戳与urs相同,但返回值符合规定。。“文本框1”、“文本框2”、“文本框3”而不是“文本框_AAAA”,etcmine与urs相同,但返回值符合规定。。“文本框1”、“文本框2”、“文本框3”,而不是“文本框”等