2014-02-15 93 views
0

平臺:MS Excel 2007(MS Visual Basic 6.0)使用VBA檢查Excel中是否存在一個已命名的文本框

我有一些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': 無法獲取工作表類的TextBoxes屬性

我懷疑這是由於excel沒有名爲「TextBox_BBBB」的此文本框

讓我怎麼把支票xlApp.ActiveSheet.TextBoxes("TextBox_BBBB").Text = TxtBBBB

前檢查,如果這個工作表/ activesheet不包含文本框(「TextBox_BBBB」),它不會執行這一步呢?

回答

3

由於文本框形狀,這裏是說,如果一個特定的文本框是在activesheet一個辦法:

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 
+0

嗯...我不是很熟悉將公共功能添加到我的腳本中...所以我可以複製並粘貼此函數並將值編輯到我的腳本中? – Leon

+0

你可以修改它,如** L42 **的Post –

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 

希望這可以幫助

+0

mine與urs相同,但返回值按照規定。「Textbox 1」,「Textbox 2」,「Textbox 3」,而不是「 Textbox_AAAA「等 – Leon

0

謝謝L42和Gary的學生

我知道了。我應該把

For Each s In xlApp.ActiveSheet.Shapes 

,而不是

For Each s In ActiveSheet.Shapes 

只有

感謝您的幫助! =)

相關問題