VBA: Wie feststellen ob Objektvariable definiert?

Tach’chen.

Wie lässt sich mit VBA feststellen, ob eine Objektvariable definiert ist?

Konkreter Fall:
Mittels VBA möchte ich diejenige Zeile aus einer Liste löschen, in der sich die aktive Zelle befindet:

Dim i As Integer
i = Selection.Row
Selection.ListObject.ListRows(i - 1).Delete

Klappt soweit auch, allerdings nur, wenn sich die aktive Zelle innerhalb der Liste befindet. Wenn die aktive Zelle außerhalb der Liste ist, dann gibt’s die Fehlermeldung „Laufzeitfehler 91, Objektvariable (…) nicht festgelegt“.

Ist klar, aber wie klammere ich diesen Fall aus? Kann ich feststellen, ob sich die aktive Zelle innerhalb der Liste befindet? Oder kann ich testen, ob die Objektvariable festgelegt ist?

Vielen Dank
TTR

Hallo TTR,

da ich nicht so schnell erkennen kann, was das werden soll ein paar Hinweise:

Prüfen ob eine Variable vom Typ Object ist:

Dim Int1 As Integer, Objekt2, Test1 ' Variablen deklarieren.
Dim Objekt1 As Object
Set Objekt2 = Objekt1 ' Objektverweis zuweisen.
Test1 = IsObject(Objekt2) ' Liefert True.
Test1 = IsObject(Int1) ' Liefert False.

Prüfen ob ein Object auch etwas „in sich hat“:

If (Not Selection.ListObject.ListRows(i - 1) Is Nothing)Then
 Selection.ListObject.ListRows(i - 1).Delete
end if

Allerdings hat das bei mir zu einem Fehler geführt. Ich vermute allerdings, dass ich nicht ein Objekt selektiert hatte, das die Eigenschaft Listobject hat. Die hab ich auch in der Hilfe (zumindest noch nicht) nicht gefunden. Was willst du denn da machen/löschen?

mfg

Dirk.Pegasus

Hallo TTR,

da ich nicht so schnell erkennen kann, was das werden soll ein
paar Hinweise:

Prüfen ob eine Variable vom Typ Object ist:

Dim Int1 As Integer, Objekt2, Test1 ’ Variablen
deklarieren.
Dim Objekt1 As Object
Set Objekt2 = Objekt1 ’ Objektverweis zuweisen.
Test1 = IsObject(Objekt2) ’ Liefert True.
Test1 = IsObject(Int1) ’ Liefert False.

Prüfen ob ein Object auch etwas „in sich hat“:

If (Not Selection.ListObject.ListRows(i - 1) Is Nothing)Then
Selection.ListObject.ListRows(i - 1).Delete
end if

Allerdings hat das bei mir zu einem Fehler geführt. Ich
vermute allerdings, dass ich nicht ein Objekt selektiert
hatte, das die Eigenschaft Listobject hat. Die hab ich auch in
der Hilfe (zumindest noch nicht) nicht gefunden. Was willst du
denn da machen/löschen?

Ich will auf Knopfdruck eine Zeile einer Liste (Liste im Sinne der Excel-Liste wie sie ab 2003 verfügbar ist) löschen. Gelöscht werden soll die Zeile, in der sich die aktive Zelle bei Knopfdruck befindet. Ich schwanke allerdings, mich von der Liste auf den Excel-„Bereich“ zu verlagern. So wirklich viele Vorteile scheint mir die Liste gebenüber dem Bereich auch nicht zu haben…

TTR