Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Prüfen ob Tabellenobjekt vorhanden

Prüfen ob Tabellenobjekt vorhanden
28.03.2013 08:21:51
Nette13
Hallo zusammen,
vielleicht arbeitet jemand von Euch auch mit List.Objects in VBA...?
Ich formatiere fast jede Tabelle als Tabellenobjekt.
Per VBA möchte ich nun prüfen, ob eine Tabelle als List.Object formatiert ist. allerdings prüfe ich mit meinem Code wohl gerade, ob der Name dem Abfragenamen entspricht.
If Sheets("LedgerData").ListObjects("PostedSalesTax").Name = "PostedSalesTax" Then
MsgBox "Tabelle 'Posten' ist bereits formatiert"
Exit Sub
Else
Hat jemand von Euch eine Idee dazu?
Lieben Gruß
Annette

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfen ob Tabellenobjekt vorhanden
28.03.2013 08:48:02
hary
Moin Annette
In eine Zelle klicken und makro starten.
Sub vorhanden()
If TypeOf Selection Is Range Then
If Not Selection.ListObject Is Nothing Then
MsgBox Selection.ListObject.Name
Else
MsgBox "Auswahl enthält keine Liste!"
End If
End If
End Sub

Prueft ob es ein Listobjekt ist
gruss hary

Anzeige
AW: Prüfen ob Tabellenobjekt vorhanden
02.04.2013 08:42:47
Nette13
Hallo hary,
vielen lieben Dank für deine schnelle Antwort. Du bist dann wohl echt ein alter Hase was VBA angeht, oder. Es hat auf jeden Fall funktioniert.
Gruß
Annette

AW: Prüfen ob Tabellenobjekt vorhanden
28.03.2013 10:40:17
Luschi
Hallo nette Anette,
hier mal 2 Lösungsvorschläge:

Function testListObjects1(xTabelle As String) As Variant
Dim myArr As Variant, i1 As Integer, i2 As Integer
i1 = ThisWorkbook.Worksheets(xTabelle).ListObjects.Count
If i1 > 0 Then
ReDim myArr(i1 - 1, 1)
For i2 = 1 To i1
myArr(i2 - 1, 0) = ThisWorkbook.Worksheets(xTabelle).ListObjects(i2).Name
myArr(i2 - 1, 1) = ThisWorkbook.Worksheets(xTabelle).ListObjects(i2).Range.Address
Next i2
End If
testListObjects1 = myArr
Erase myArr
End Function
Sub test1()
Dim myArr As Variant, sName As String, i As Integer
myArr = testListObjects1("Tabelle1")
If IsEmpty(myArr) Then
MsgBox "Die Tabelle enthält keine benutzerdefinierten Listen!", 48
Else
sName = ""
For i = 0 To UBound(myArr)
sName = sName & myArr(i, 0) & ": " & myArr(i, 1) & vbCrLf
Next i
MsgBox "Folgende besutzerdefinierten Listen sind in dieser Tabelle vorhanden:" & _
vbCrLf & vbCrLf & sName
End If
Erase myArr
End Sub
o d e r

Function testListObjects2(xTabelle As String) As Object
Dim myListObject As Object
If ThisWorkbook.Worksheets(xTabelle).ListObjects.Count = 0 Then
Set myListObject = Nothing
Else
Set myListObject = ThisWorkbook.Worksheets(xTabelle).ListObjects
End If
Set testListObjects2 = myListObject
Set myListObject = Nothing
End Function
Sub test2()
Dim myListObject As Object, oLO As ListObject
Dim sName As String, iIcon As Integer
Set myListObject = testListObjects2("Tabelle1")
If myListObject Is Nothing Then
sName = "Die Tabelle enthält keine benutzerdefinierten Listen!"
iIcon = vbExclamation
Else
sName = ""
For Each oLO In myListObject
sName = sName & oLO.Name & ": " & oLO.Range.Address & vbCrLf
Next oLO
sName = "Folgende besutzerdefinierten Listen sind in dieser Tabelle vorhanden:" & _
vbCrLf & vbCrLf & sName
iIcon = vbInformation
End If
Set oLO = Nothing
Set myListObject = Nothing
MsgBox sName, iIcon
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Prüfen, ob ein Tabellenobjekt vorhanden ist


Schritt-für-Schritt-Anleitung

Um in Excel zu prüfen, ob ein Tabellenobjekt (ListObject) vorhanden ist, kannst Du folgende Schritte befolgen:

  1. Öffne das VBA-Editor-Fenster:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle "Einfügen" > "Modul".
  3. Füge den folgenden Code ein:

    Sub vorhanden()
       If TypeOf Selection Is Range Then
           If Not Selection.ListObject Is Nothing Then
               MsgBox "Das ListObject '" & Selection.ListObject.Name & "' ist vorhanden."
           Else
               MsgBox "Die Auswahl enthält kein ListObject!"
           End If
       End If
    End Sub
  4. Führe das Makro aus:

    • Klicke in eine Zelle innerhalb einer Tabelle und führe das Makro vorhanden aus. Das Makro prüft, ob das ListObject vorhanden ist.

Häufige Fehler und Lösungen

  • Fehler: "Die Auswahl enthält kein ListObject!"

    • Lösung: Stelle sicher, dass Du eine Zelle innerhalb einer Tabelle ausgewählt hast. Wenn Du außerhalb einer Tabelle klickst, wird dieser Fehler angezeigt.
  • Fehler: "Das Objekt ist nicht definiert"

    • Lösung: Überprüfe, ob Du die richtige Tabelle und das richtige ListObject referenzierst. Achte darauf, dass der Name korrekt ist.

Alternative Methoden

Es gibt verschiedene Ansätze, um zu prüfen, ob ein ListObject vorhanden ist. Hier sind zwei Alternativen:

  1. Über eine Funktion, die alle ListObjects auflistet:

    Function testListObjects(xTabelle As String) As Variant
       Dim myArr As Variant, i As Integer
       i = ThisWorkbook.Worksheets(xTabelle).ListObjects.Count
       If i > 0 Then
           ReDim myArr(i - 1)
           For i = 1 To ThisWorkbook.Worksheets(xTabelle).ListObjects.Count
               myArr(i - 1) = ThisWorkbook.Worksheets(xTabelle).ListObjects(i).Name
           Next i
           testListObjects = myArr
       Else
           testListObjects = "Keine ListObjects vorhanden."
       End If
    End Function
  2. Mit der Count-Eigenschaft:

    If ThisWorkbook.Worksheets("Tabelle1").ListObjects.Count > 0 Then
       MsgBox "Es sind ListObjects vorhanden."
    Else
       MsgBox "Es sind keine ListObjects vorhanden."
    End If

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du mit ListObjects in Excel arbeiten kannst:

  • Prüfen, ob ein bestimmter Wert in der Tabelle vorhanden ist:

    Sub wertVorhanden()
      Dim ws As Worksheet
      Dim lo As ListObject
      Dim cell As Range
      Dim wert As String
      wert = "DeinWert"
    
      Set ws = ThisWorkbook.Sheets("Tabelle1")
      Set lo = ws.ListObjects(1) ' Erstes ListObject
    
      For Each cell In lo.DataBodyRange
          If cell.Value = wert Then
              MsgBox "Wert '" & wert & "' ist vorhanden."
              Exit Sub
          End If
      Next cell
      MsgBox "Wert '" & wert & "' ist nicht vorhanden."
    End Sub

Tipps für Profis

  • Verwende ListObjects für dynamische Tabellen: Mit ListObjects kannst Du Daten einfacher verwalten, da sie sich automatisch anpassen, wenn Du neue Zeilen oder Spalten hinzufügst.

  • Nutze VBA zur Automatisierung: Automatisiere das Prüfen von Werten in deinen Tabellen, um Zeit zu sparen und Fehler zu minimieren.

  • Experimentiere mit ListObject-Eigenschaften: Lerne die verschiedenen Eigenschaften von ListObjects kennen, um deine Excel-Arbeiten zu optimieren.


FAQ: Häufige Fragen

1. Wie prüfe ich, ob ein Wert in einer bestimmten Tabelle vorhanden ist? Du kannst eine Schleife verwenden, um durch die Zellen der Tabelle zu iterieren und den Wert zu prüfen. Beispiel siehe im Abschnitt "Praktische Beispiele".

2. Was sind ListObjects in Excel? ListObjects sind formatierte Tabellen in Excel, die spezielle Eigenschaften und Methoden haben, die das Arbeiten mit Daten erleichtern.

3. Wie kann ich ein ListObject in VBA erstellen? Um ein neues ListObject zu erstellen, kannst Du folgenden Code verwenden:

Dim lo As ListObject
Set lo = ThisWorkbook.Sheets("Tabelle1").ListObjects.Add(xlSrcRange, Range("A1:C10"), , xlYes, "NeueTabelle")

4. Wie kann ich den Namen eines ListObjects ändern? Du kannst den Namen eines ListObjects einfach ändern, indem Du auf die Name-Eigenschaft zugreifst:

ThisWorkbook.Sheets("Tabelle1").ListObjects(1).Name = "NeuerName"

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige