excel - 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
解决方案
您无法从 Workbook 访问 ListObjects 集合,因为它是 Worksheet 对象的成员,因此您的这部分代码将不起作用
ThisWorkbook.ListObjects("TestingTable").Delete
应该比较ThisWorkbook.Worksheets("SheetName").ListObjects("TestingTable").Delete
推荐阅读
- java - Java ArrayMap 实现
- reactjs - 理解为什么在 React 类组件中不推荐使用 super()
- c - 套接字 fd 的 write() 是否有大小限制?
- python - Python转换两个不同坐标平面之间的角度?
- javascript - TypeError:find_element_by_xpath() 得到了一个意外的关键字参数“onclick”
- if-statement - 如何在JMeter中使用if控制器检查文件名
- node.js - 有没有办法在 nodejs 应用程序中使用全局类似值?
- python - 如何在 Django Admin 中显示没有标签的 ReadOnlyFields?
- nuxt.js - Nuxt Project 404 页面刷新网页
- sql - 如何根据其他表中没有公共字段的信息进行计算?