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