首页 > 解决方案 > Excel VBA - 从工作表中删除表名

问题描述

我有一个代码可以在不同的 15 个 excel 文件中创建名称相同的表:“TestingTable”。这是一个每周/每月的报告,它与从文件夹中的 15 张工作表中的查询负载相结合。我需要相同的表名才能在查询中加载和组合它们。当用户在任何文件中创建新工作表以生成当前报告时,表名递增为“测试表 1”、“测试表 2”等。我的 excel 查询基于名称“测试表”,所以需要确保最新报告的表名不会增加。我想我需要添加到我的代码中,在创建表的行之前,从工作簿中的任何工作表中删除表名的行。尝试在代码中插入以下删除,但没有奏效。有任何想法吗?

Public Sub TestSub()
    Dim lastRow As Integer
    Dim currentRange As Range
    Dim currentRange2 As Range
    Dim currentTable As TableObject
    Dim firstRow As Integer
    Dim columNumber As Integer
    Dim columnName As String
    ThisWorkbook.ListObjects("TestingTable").Delete
    ThisWorkbook.ListObjects("TestingTable3").Delete
        
    
    lastRow = ThisWorkbook.Worksheets("Current").Range("A" & Rows.Count).End(xlUp).Row
    firstRow = ThisWorkbook.Worksheets("Current").Range("A1").End(xlDown).Row
    
    ' step 1 - find last row
        
    For columNumber = 1 To 1000
        columnName = ThisWorkbook.Worksheets("Current").Cells(firstRow, columNumber)
        If columnName = "Current+3" Then
            GoTo Proceed
        End If
    Next columNumber
        
Proceed:
     
    'Set currentRange = shData.Range("A" & firstRow & ":S" & lastRow)
    
    Set currentRange2 = ThisWorkbook.Worksheets("Current").Range(ThisWorkbook.Worksheets("Current").Cells(firstRow, 1), ThisWorkbook.Worksheets("Current").Cells(lastRow, columNumber))
    

    'step 2- find first column
    
    
    ' assign range to a variable
    
    ' crate table from range variable
      ThisWorkbook.Worksheets("Current").ListObjects.Add(xlSrcRange, currentRange2, , xlYes).Name = "TestingTable"
    
End Sub 

标签: excelvba

解决方案


您无法从 Workbook 访问 ListObjects 集合,因为它是 Worksheet 对象的成员,因此您的这部分代码将不起作用

ThisWorkbook.ListObjects("TestingTable").Delete

应该比较ThisWorkbook.Worksheets("SheetName").ListObjects("TestingTable").Delete


推荐阅读