Mit VBA auf Objekt prüfen

moin moin,

ich hab ein script geschrieben, das der reihe nach folgendes macht

  1. temporäre grafiken (objekte) löschen
  2. abhängig von einem zellinhalt diese Grafik in einem anderen sheet suchen und kopieren
  3. in das erste sheet einfügen und ihm den temporären Namen zuweisen.

Nun möchte ich noch sicherheitsabfragen einbauen, weil das Makro abbricht resp. abbrechen würde, wenn eine der Grafiken nicht selektiert werden kann.

Allerdings fehlt mir so ein wenig der Ansatz dabei, wie man das realisieren kann.
Kann mir jemand einen Tipp dazu geben?
Vielen Dank

Munich

hi,
meinst du sowas ?

Sub Löschen()
Dim Grafik As Shape
For Each Grafik In ActiveSheet.Shapes
If Grafik.Type = msoPicture Then
Grafik.Delete
End If
Next
End Sub

cu MIcha

nein nein…
ich meine etwas wie

if not Activesheets.Shape(„name“).exists then msgbox „die Grafik gibt es nicht“

also ein check, ob es eine bestimmte Grafik gibt oder eben nicht.

Danke trotzdem

Hallo Munich Freak,

Ich kann mir diese Syntax „object is nothing“ nicht angewöhnen:

if (Activesheets.Shape(„name“) is nothing) then msgbox „die Grafik gibt es nicht“

Allerdings gibts auch noch isNUll(bla) oder so ähnliche Sachen. Ptobiers mal wie oben, und dann schaun wir mal… (Die Klammern sind nur zur Verdeutlichung.

mfg

Dirk.Pegasus

Hi Dirk,

Ich kann mir diese Syntax „object is nothing“ nicht
angewöhnen:

ich mich auch nicht :smile: hab zwar darüber gelesen, aber es nicht zum laufen gebracht…

if (Activesheets.Shape(„name“) is nothing) then msgbox „die
Grafik gibt es nicht“

das bringt mir leider einen
Laufzeitfehler ‚424‘:
Objekt erforderlich.

ich habs auch mal noch versucht das vorher zu deklarieren mit

Sub Makro1()
Dim test As Object
test = Activesheets.Shape("werweisswas")
If (test Is Nothing) Then MsgBox "die Grafik gibt es nicht"
End Sub

aber auch das mag er nicht… *seufz*

Allerdings gibts auch noch isNUll(bla) oder so ähnliche
Sachen. Ptobiers mal wie oben, und dann schaun wir mal… (Die
Klammern sind nur zur Verdeutlichung.

ich werd mich mal auf die Suche begeben… Danke! :smile:

Hallo MF,

hab da nochmal gesucht und nichts richtiges gefunden. Hab Selber mal das gemacht:

Public Function existsItem(obj As Object, name As String) As Boolean
 Dim str As String
 existsItem = False

 On Error GoTo ende

 str = obj(name).name
 existsItem = True 

ende:
End Function

Wenns VBA halt nicht kann? Oder hast du was gefunden?

mfg

Dirk.Pegasus

ähm… ich bin nicht so ganz firm in Funktionsaufruf mittels vba.
Kannst Du mir da noch eine Hilfestellung geben?

Vielen Dank!

Die einzige Möglichkeit, die ich noch sehe ist mit einem loop durch alle Grafiken des Sheets zu gehen und den Namen zu überprüfen…

Hallo Munich Freak,

Aber gerne:

if (existsItem(meinObjekt, "werweisswas")) then
'gibts wohl
else
'na denn nicht
end if

Dabei ist meinObjekt in deinem Fall:

ActiveSheet.Shapes

Also die Auflistung der Objekte in der mit einem Namen nach einem Objekt gesucht werden soll.

mfg

Dirk.Pegasus

1 Like

Dankeschön!
Jetzt wird es etwas klarer :smile: