テーブルが存在するかどうかをVBA Excel 2007を使用して確認し、存在する場合は削除します。名前付きテーブルが存在するかどうかを確認する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
私のコードは限りこれらのテーブルは私のワークシートに存在するように動作します。私はまた、ライン
If .ListObjects(sTableNames(lIndex)).Count > 0 Then
でライン
If Not .ListObjects(sTableNames(lIndex)) Is Nothing Then
を交換しようとしたが、それはまだ動作しません。
誰かがこれを動作させる方法を知っていますか?
ご協力いただければ幸いです。 nheeが右アプローチであることを示唆しているように、テーブルが
Function TableExists(ws As Worksheet, tblNam As String) As Boolean
Dim oTbl As ListObject
For Each oTbl In ws.ListObjects
If oTbl.Name = tblNam Then
TableExists = True
Exit Function
End If
Next oTbl
TableExists = False
End Function
? 'dirty'という簡単な修正は、 '.... Delete'行の前に' On Error Resume Next'を追加することです。 – nhee
実行時エラー '9'が表示される:下付き文字が範囲外にある –
エラーが発生した場合にExcelが割り込みコードを実行しないようにします。なぜなら、すべてのエラーが理由で表示されているからです(マクロは存在しないものを削除しようとしています)、ジャンプして他のバグを見落とす可能性があります。 – nhee