VBA Excel 2007 kullanarak bir tablo olup olmadığını belirlemeye çalışıyorum ve varsa silin.Adlandırılmış tablolar var mı kontrol edin VBA Excel 2007
Bir dizi tablo adıyla döngü yapıyorum.
Benim kod aşağıda:
' 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
Kodum sürece bu tablolar benim çalışma var gibi çalışır. Ayrıca hat
If .ListObjects(sTableNames(lIndex)).Count > 0 Then
çizgiyi
If Not .ListObjects(sTableNames(lIndex)) Is Nothing Then
değiştirilmesi denedi ancak hala çalışmıyor.
Bunu işe almak için bir yol bilen var mı?
Herhangi bir yardım için teşekkür ederiz. nhee doğru yaklaşımdır anlaşılacağı gibi, bir tablo
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
Hangi hatayı alıyorum:
yukarıda UDF öneri olurdu gibi çabuk ile
? 'Kirli' hızlı düzeltme, '.... Sil 'satırından önce' Hata Özgeçmişinde Yanında 'eklemek olacaktır. – nheeÇalışma zamanı hatası '9' alıyorum: Abonelik aralık dışı –
Excel, bir hatayla karşılaşması durumunda kod yürütmeyi kesintiye uğratmaz. Bu 'kirli' çünkü tüm hatalar bir sebepten dolayı ortaya çıkar (sizin durumunuzda: makro, var olmayan bir şeyi silmeye çalışıyor) ve bunun üstünden atlayarak diğer hataları gözden kaçırmış olabilirsiniz. – nhee