lal*_*_12 3 excel vba excel-vba
我正在尝试使用VBA Excel 2007确定表是否存在,如果存在则删除它.
我循环遍历一系列表名.
我的代码如下:
' Allocate
Dim lIndex As Long
' Allocate table header values in array
Dim sTableNames(1 To Constants.lNumTables) As String
' Populate array
sTableNames(1) = Constants.sTableNameKpiAllIncidents
sTableNames(2) = Constants.sTableNameSlaAllManualHelpdeskIncidents
sTableNames(3) = Constants.sTableNameSlaAllManualIncidents
sTableNames(4) = Constants.sTableNameKpiAllAutomaticIncidents
' Work in worksheet Statistics
With Worksheets(Constants.sSheetNameStatistics)
' Loop through all tables
For lIndex = 1 To UBound(sTableNames)
' Check if table already exists
If Not .ListObjects(sTableNames(lIndex)) Is Nothing Then
' Delete table
.ListObjects(sTableNames(lIndex)).Delete
End If
Next
End With
Run Code Online (Sandbox Code Playgroud)
只要这些表存在于我的工作表中,我的代码就可以正常工作.我也试过更换线
If Not .ListObjects(sTableNames(lIndex)) Is Nothing Then
Run Code Online (Sandbox Code Playgroud)
与线
If .ListObjects(sTableNames(lIndex)).Count > 0 Then
Run Code Online (Sandbox Code Playgroud)
但它仍然无效.
有人知道让这个工作的方法吗?
任何帮助,将不胜感激.
nhee建议的错误处理是正确的方法.
作为UDF,上面的建议会更快:
Function TableExists(ws As Worksheet, tblNam As String) As Boolean
Dim oTbl As ListObject
On Error Resume Next
Set oTbl = ws.ListObjects(tblNam)
TableExists = Not oTbl Is Nothing
End Function
Run Code Online (Sandbox Code Playgroud)