想删除excle表格中的文本框,包括文本框里面的文字和文本框本身
文本框有多个,全都位于第2-4行 
删除文本框后删除第2-4行现在的问题是,删除文本框的时候就会出错
代码如下,大家帮我看看 Sheets(SheetName).Select
    Sheets(SheetName).Copy after:=Sheets(SheetName)
    Sheets(SheetName & " (2)").Select
    Sheets(SheetName & " (2)").Name = SheetName2
    
    Sheets(SheetName2).Select
    Sheets(SheetName2).Cells(1, 1) = "项目风险一览表"
    'Sheets(SheetName2).Shapes.Range(Array("Text Box 2", "Text Box 3", "Text Box 4", "Text Box 5", "Text Box 6", "Text Box 7", "Text Box 8", "Text Box 9", "Text Box 10", "Text Box 11", "Text Box 17")).Select
    'Selection.Delete
    'Sheets(SheetName2).Rows("2:4").Select
    'Selection.Delete Shift:=xlUp
    'Sheets(SheetName2).Columns("G:K").Select
    'Selection.Delete Shift:=xlToLeft

解决方案 »

  1.   

    代码铐错了,是这样的,大家再帮我看看Sheets(SheetName).Select 
        Sheets(SheetName).Copy after:=Sheets(SheetName) 
        Sheets(SheetName & " (2)").Select 
        Sheets(SheetName & " (2)").Name = SheetName2 
        
        Sheets(SheetName2).Select 
        Sheets(SheetName2).Cells(1, 1) = "项目风险一览表" 
        Sheets(SheetName2).Shapes.Range(Array("Text Box 2", "Text Box 3", "Text Box 4", "Text Box 5", "Text Box 6", "Text Box 7", "Text Box 8", "Text Box 9", "Text Box 10", "Text Box 11", "Text Box 17")).Select 
        Selection.Delete 
        Sheets(SheetName2).Rows("2:4").Select 
        Selection.Delete Shift:=xlUp 
        Sheets(SheetName2).Columns("G:K").Select 
        Selection.Delete Shift:=xlToLeft
      

  2.   

    一样的
    一放在VBA里运行就是运行时错误,说“Range的select方法不正确”
      

  3.   

    确认你的文本框的名字是否正确"比如:"Text Box 2"文本框的名字是:
    TextBox2
    还是
    Text Box 2
      

  4.   

    如果你是要全部删除,可以采用这种方式:dim a as shape
    for each a in sheets("sheet1").shapes
    '如果还有其它shape,可以在这里用a.type或a.name来判断要删除哪些shape
    a.delete
    next
      

  5.   

    提供一段简化后的代码,仅供参考:
    Sub Test()
        On Error Resume Next
        '定义变量
        Dim SheetName, SheetName2 As String, Shp As Shape
        '变量赋值
        SheetName = "Sheet1"
        SheetName2 = "NewSheet"
        '复制表格
        Sheets(SheetName).Copy after:=Sheets(SheetName)
        '重命名,应该判断是否有重名,此处忽略
        ActiveSheet.Name = SheetName2
        With Sheets(SheetName2)
            '删除所有shape对象
            For Each Shp In .Shapes
                Shp.Delete
            Next
            '修改相关内容
            .Cells(1, 1) = "项目风险一览表"
            .Rows("2:4").Delete Shift:=xlUp
            .Columns("G:K").Delete Shift:=xlToLeft
        End With
    End Sub
      

  6.   


    Sheets(SheetName2).Shapes.Range(Array("TextBox2", "TextBox3", "TextBox4", "TextBox5", "TextBox6", "TextBox7", "TextBox8", "TextBox9", "TextBox10", "TextBox11", "TextBox17")).Select 
    应该是这样的吧?
      

  7.   

    楼主没有说明删除的代码要写在什么事件里,所以下面的代码不一定是楼主所要的。但是稍加修改就应该能满足楼主的要求的。
    代码运行的条件:有1张工作表,名字是:Sheet1。其中Sheet1中有很3个文本框,名字:TextBox1,TextBox2,TextBox3。还有1个命令按钮,名字:CommandButton1。
    功能:单击命令按钮,复制Sheet1工作表,新复制的工作表名是NewSheet1,同时删除NewSheet1中所有的文本框和命令按钮,及删除NewSheet2的第2到第4行。不知道是不是楼主想要的。
    在Sheet1中的命令按钮的单击事件中添加如下代码:
    Private Sub CommandButton1_Click()
        Worksheets("Sheet1").Copy after:=Worksheets("Sheet1") '复制新的工作表。
        ActiveSheet.Name = "NewSheet1"  '重新给新工作表命名为NewSheet1
        Worksheets("NewSheet1").Activate
        Worksheets("NewSheet1").Shapes.Range(Array("TextBox1", "TextBox2", "TextBox3", "CommandButton1")).Delete
        Worksheets("NewSheet1").Rows("2:4").Delete
    End Sub