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

Wie kann ich in VBA prüfen ob eine Zelle ein ListO

Wie kann ich in VBA prüfen ob eine Zelle ein ListO
14.05.2016 15:55:28
Lukas
Hi, wie kann ich in VBA prüfen, ob eine Zelle ein Listobject ist oder nicht? Danke für die Antworten schon im Voraus!

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wie kann ich in VBA prüfen ob eine Zelle ein ListO
14.05.2016 16:06:55
Daniel
Hi
damit kannst du rausfinden, ob und wenn ja zu welchem Listobjekt eine Zelle gehört.
die zu prüfende Zelle ist in der Variablen "Prüfzelle" hinterlegt:
Sub test()
Dim i As Long
Dim PrüfZelle As Range
Set PrüfZelle = Range("A1")
With PrüfZelle.Worksheet
For i = 1 To .ListObjects.Count
If Not Intersect(PrüfZelle, .ListObjects(i).Range) Is Nothing Then Exit For
Next
If i > .ListObjects.Count Then
MsgBox "Zelle " & PrüfZelle.Address(0, 0) & " ist kein Bestandteil eines Listobjektes"
Else
MsgBox "Zelle " & PrüfZelle.Address(0, 0) & " gehört zu: " & .ListObjects(i).Name
End If
End With
End Sub

die eigentliche Prüfung findet in der For-Next-Schleife ab.
Gruß Daniel

Anzeige
AW: Wie kann ich in VBA prüfen ob eine Zelle ein ListO
14.05.2016 16:31:50
Lukas
kannst du mir das bitte erklären?
Wie kann ich das in eine do while loop schleife einbauen?
Lg Lukas

AW: Wie kann ich in VBA prüfen ob eine Zelle ein ListO
14.05.2016 16:55:20
Daniel
Hi
naja, ist eigentlich ganz einfach.
die Schleife läuft von 1 bis zur Anzahl der Listobjekte auf dem Tabellenblatt
das i ist dann die Indexnummer über die man die einzelnen Listbojekte ansprechen kann.
dann wird geprüft, ob sich der Zellbereich vom Listobjekt mit der Zelle überschneidet (Intersect) und wenn ja, wird die Schleife abgebrochen.
das i ist ist dann die Indexnummer des Listobjektes, in welchem die Zelle liegt.
Wenn es keine Überschneidung gibt, läuft die For-Schleife vollständig durch.
Wenn die For-Schleife vollständig durchläuft, ist der Schleifenzähler immer grösser als der Schleifenendwert.
Das kann man verwenden um festzustellen, ob die Schleife vollständig durchlaufen oder vorzeitig abgebrochen wurde.
warum willst du das ganze in eine do-loop-Schleife einbauen?
ist doch unsinn.
sinnvoll wäre höchsten noch eine For-Each-In-Variante, mit der Schleife direkt über die Listobjekte und nicht über den Index:
Sub test()
Dim LiOb As ListObject
Dim PrüfZelle As Range
Set PrüfZelle = Range("A100")
With PrüfZelle.Worksheet
For Each LiOb In .ListObjects
If Not Intersect(PrüfZelle, LiOb.Range) Is Nothing Then Exit For
Next
If LiOb Is Nothing Then
MsgBox "Zelle " & PrüfZelle.Address(0, 0) & " ist kein Bestandteil eines Listobjektes"
Else
MsgBox "Zelle " & PrüfZelle.Address(0, 0) & " gehört zu: " & LiOb.Name
End If
End With
End Sub
Gruß Daniel

Anzeige
AW: Wie kann ich in VBA prüfen ob eine Zelle ein ListO
14.05.2016 17:10:10
Lukas
Danke für deine Erklärung!
Ich brauche es in einer Do-Loop Schleife, weil ich ListObjekte die immer über eine Zeile gehen um eine Spalte erweitern muss. Das muss solange geschehen, bis das Listobjekt links von der Prüfzelle ein Listobjekt ist. Deshalb do loop...
Vielen dank jedenfalls für deine Antwort!

AW: Wie kann ich in VBA prüfen ob eine Zelle ein ListO
14.05.2016 17:27:59
Daniel
das ist jetzt nicht so ganz das, was du am Anfang gefragt hast.
was du willst, geht im Prinzip so (achtung, kein echter Code)
Do while Intersect(Range(...), DeinListobjekt.Range) is Nothing
hier der Code, um das Listobjekt um eine Spalte zu erweitern
Loop
Achtung, endlosschleifengefahr, wenn das Listobjekt die Zelle nicht trifft.
Gruß Daniel

Anzeige
AW: Wie kann ich in VBA prüfen ob eine Zelle ein ListO
14.05.2016 17:39:04
Lukas
Danke für deine Hilfe!
Ich habe einfach aus deinem Sub am Anfang eine Function mit Rückgabewert true oder false gemacht.
Diese Function habe ich dann in die Do loop Schleife eingebaut!
Endlosschleifengefahr habe ich auch beseitigt!
Lg Lukas

Wie kann ich in VBA prüfen ob eine Zelle ein ListO
14.05.2016 18:29:16
Hajo_Zi
lese mal FAQ.
Zu Crossposting lies diese Seite Hajo-Excel.de
Durch Crosspostuing werden mehrere Gruppen von Leuten mit dem gleichen Thema befasst, ohne dass sie voneinander wissen.
Naturgemäß laufen dann die Antworten, die im einen Forum "zu spät" gegeben wurden, ins Leere und bleiben ohne Resonanz.
Es reicht also, zunächst in einem Forum zu posten - wenn die Antworten dann unbefriedigend sein sollten, steht es einem anschließend immer noch offen, ein anderes Forum zu Rate zu ziehen.
Ich mache keine Werbung für andere Foren und verzichte darum auf den Link.

Anzeige

380 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige