使用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
只要
谢谢您的帮助!!! =)