Wie kann ich in VBA prüfen ob eine Zelle ein ListObject ist?
Hi, wie kann ich in VBA prüfen, ob eine Zelle ein Listobject ist oder nicht? Danke für die Antworten schon im Voraus!
2 Antworten
Hallo,
ich habe den Vorgang jetzt mal an ein Ereignis (Worksheet_SelectionChange) gebunden und komme zu diesem Ergebnis
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range(UserForm1.ListBox1.RowSource)) Is Nothing Then
MsgBox "Ist nicht Teil der ListBox"
Else
MsgBox "Ist Teil der ListBox"
End If
End Sub
Dabei bin ich davon ausgegangen, dass Teil einer ListBox mit ListBox.Datenquelle (RowSource) übersetzt werden muss.
Ich hoffe, meine Vermutung ist richtig :)
Zelle als Listobject - ws soll das sein?
Sub test()
Set x = ActiveCell
If x.ListObject Is Nothing Then
MsgBox "ausserhalb"
Else
MsgBox "innerhalb"
End If
End Sub
DH! auf die Idee wäre ich jetzt nicht gekommen!
Also Listobject ist eine Range, zB Range(A3;A33), kann man dann auch direkt so schreiben anstatt Listobject.
Aber muss es nicht heissen:
if intersect(x, Listobject) is nothing, then
Msgbox "ausserhalb"
else
Msgbox "innerhalb
end if
Meist macht man sogar
- if Not intersect(x, Listobject) is nothing, then
- MSGbox "innerhalb"
- else
- MSGbox "ausserhalb"
- end if
das vermeidet Fehler, wenn zB ein Textfeld, Diagramm oder Grafikobjekt ausgewählt ist.
so gehts:
Sub IstZelleTeiEinesBereichs_()
Dim x As Range
Set x = ActiveCell
If Not Intersect(x, Range("A1:A20")) Is Nothing Then
MsgBox "innerhalb"
Else
MsgBox "ausserhalb"
End If
End Sub
War zu faul, das vorher auszuprobieren.
Es müsste auch noch gehen, den Bereich in der MSGbox wiederzugeben:mit
MsgBox "ausserhalb " & Range("A1:A30").address
zu letzterem ist es allerdings sinnvoll, auch den Bereich als Variable oben zu setten, damit man dann mehrfach drauf zugreifen kann.
Was ich aber seit Anbeginn vermisse, ist -per Formel oder Makro- zu erkennen, ob die Zelle Teil IRGENDEINES benannten Bereichs und -wenn ja- welches Bereichs ist (in Lotus-123 ging das schon anfang der 90er Jahre!) Vllt hat sich da aber was getan, was ich nicht mitgekriegt habe. Ich müsste in einer Schleife die gesamte Names-Liste durchlaufen lassen und wie oben abtesten. (hätte ich aber vor 20 Jahren gebraucht ( | : - / ≡≣=═≈~ )
Ich möchte prüfen ob die aktive Zelle ein Teil eines ListObjects ist.
Kannst du mir bitte sagen, wie das geht?