使用VBA检查Excel中是否存在已命名的文本框

平台: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之前进行检查xlApp.ActiveSheet.TextBoxes("TextBox_BBBB").Text = TxtBBBB

检查这个工作表/ activesheet是否不包含TextBoxes(“TextBox_BBBB”),它不会执行这个步骤?

由于文本框是一个形状 ,这里有一种方法来判断一个特定的文本框是否在活动页面上:

 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 

希望这可以帮助

感谢L42和加里的学生

我知道了..我应该放

 For Each s In xlApp.ActiveSheet.Shapes 

代替

 For Each s In ActiveSheet.Shapes 

只要

谢谢您的帮助!!! =)