【问题标题】:Check whether a named textbox exist in the excel using VBA使用VBA检查excel中是否存在命名文本框
【发布时间】:2014-02-15 23:03:36
【问题描述】:

平台: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"),是否不执行此步骤?

【问题讨论】:

    标签: vba excel excel-2007


    【解决方案1】:

    由于 TextBoxShape,因此这里有一种方法可以判断特定 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
    

    【讨论】:

    • hmm...我对在脚本中添加公共函数不是很熟悉...所以我可以复制并粘贴这个函数并将值编辑到我的脚本中?
    • 你可以像 L42 的帖子一样修改它
    【解决方案2】:

    不确定,但试试这个:

    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
    

    希望对你有帮助

    【讨论】:

    • mine 与 urs 相同,但返回值与所述相同。“Textbox 1”、“Textbox 2”、“Textbox 3”,而不是“Textbox_AAAA”等
    【解决方案3】:

    感谢 L42 和 Gary 的学生

    我明白了..我应该放

    For Each s In xlApp.ActiveSheet.Shapes
    

    而不是

    For Each s In ActiveSheet.Shapes
    

    只有

    感谢您的帮助!!! =)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-19
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 2017-09-06
      • 2013-04-27
      相关资源
      最近更新 更多