Frage: In einer Tabelle habe ich mehrere Tabellen (ListObjects) eingefügt. Wie kann ich per VBA das Vorhandensein dieser Tabellen prüfen? Wenn möglich ohne "On Error Resume Next" oder sonstige Errorhandler.
In a table I have included several tables (ListObjects). How can I check for the existence of these tables via VBA? If possible without "On Error Resume Next" or other error handler.
Hier noch eine Beispieldatei / Here's a sample file:
Tabellen - ListObjects vorhanden - prüfen und Informationen ausgeben...[ZIP 20 KB]
In a table I have included several tables (ListObjects). How can I check for the existence of these tables via VBA? If possible without "On Error Resume Next" or other error handler.
Hier noch eine Beispieldatei / Here's a sample file:
Tabellen - ListObjects vorhanden - prüfen und Informationen ausgeben...[ZIP 20 KB]
' Variablendeklaration erforderlich
OptionExplicit
'--------------------------------------------------------------------------
' Module : Module1
' Procedure : Main
' Author : Case (Ralf Stolzenburg)
' Date : 23.10.2013
' Purpose : Tabellen - ListObjects vorhanden und Informationen...
'--------------------------------------------------------------------------
SubMain()
' Wenn die "Tabelle" Table1 im Sheet1 vorhanden ist dann...
IffncListObjects("Table1","Sheet1")=TrueThen
MsgBox"ListObject exists!"
' Sonst...
Else
MsgBox"ListObject does not exist!"
EndIf
EndSub
SubMain_1()
' Wenn die "Tabelle" Table123 im Sheet1 vorhanden ist dann...
IffncListObjects("Table123","Sheet1")=TrueThen
MsgBox"ListObject exists!"
' Sonst...
Else
MsgBox"ListObject does not exist!"
EndIf
EndSub
SubMain_2()
' Wenn die "Tabelle" Table1 im Sheet123 vorhanden ist dann...
IffncListObjects("Table1","Sheet123")=TrueThen
MsgBox"ListObject exists!"
' Sonst...
Else
MsgBox"ListObject does not exist!"
EndIf
EndSub
' Funktion die den Namen des Listobjektes und den Tabellenblattnamen
' jeweils als String erwartet und einen Boolean-Wert
' (Wahr oder Falsch) zurückliefert
PrivateFunctionfncListObjects(ByValstrNameAsString,_
ByValstrSheetAsString)AsBoolean
DimobjListAsObject
' Wenn das übergebene Tabellenblatt vorhanden ist, dann...
IffncSheetEx(strSheet)=TrueThen
' Gehe durch alle Listobjekte auf dem Tabellenblatt
ForEachobjListInThisWorkbook.Worksheets(strSheet).ListObjects
' Wenn der Name des Listobjektes übereinstimmt, dann...
IfobjList.Name=strNameThen
' Funktion gibt Wahr zurück
fncListObjects=True
' Arbeit erledigt, verlasse die Funktion
ExitFunction
Else
' Sonst gibt die Funktion Falsch zurück
fncListObjects=False
EndIf
NextobjList
Else
' Das Tabellenblatt ist nicht vorhanden
MsgBox"Worksheet does not exist!"
' Beendet sofort alle Makros, setzt alle Variablen zurück
End
EndIf
EndFunction
' Funktion um das Vorhandensein von Tabellenblättern zu prüfen
' Evaluate wertet einen String aus
' ISREF ist eine Worksheet Funktion die True/False bezogen auf
' eine gültige Zellreferenz zurückliefert
PrivateFunctionfncSheetEx(ByValstrSheetAsString)AsBoolean
fncSheetEx=Evaluate("ISREF("&strSheet&"!A1)")
EndFunction
' Alle Tabellen (ListObjects) - Namen, Bereich und Tablestyle ausgeben
SubMain_3()
DimobjListAsObject
ForEachobjListInThisWorkbook.Worksheets(ActiveSheet.Name).ListObjects
Debug.PrintobjList.Name
Debug.PrintobjList.Range.Address(False,False)
Debug.PrintobjList.TableStyle.NameLocal
NextobjList
EndSub