Bei dem Code, den ich geschrieben habe, gab es doch ein paar echt grobe Schnitzer, wenn ich das Ganze retrospektiv betrachte -.-
Wie dem auch sei, ich werde versuchen zu verstehen, was ich falsch gemacht habe
Kann ich dir gerne auch noch erläutern.
Dim rng As Excel.Range
Dim rngRes As Excel.Range
Dim shp As Shape
Dim myText As String
Set shp = Worksheets( "Checklist Structure" ).Shapes '#1
myText = shp.OLEFormat. Object .Name.Characters.Text '#2
Set rngRes = rng.Find(myText, LookIn:=xlValues) '#3
#1) Du weist der Variable shp (Datentyp: Shape) eine Shape-Auflistung (Datentyp: Shapes) zu. Das führt zu einem Typenkonflikt - Apfel ist nunmal nicht gleich Birne. Immerhin ist das Set korrekt. ;)
#2) Hier stimmt alles vom Datentyp her. Allerdings würde es ab Name.Characters knirschen, da keine Methode Characters unter Name existieren kann - Name ist eine einfache Zeichenkette (String), kein Objekt. Was welches Objekt hat oder kann, lernt man mit der Zeit erst nach und nach. Es gibt Möglichkeiten wie man sich das selber ausgeben lassen / ermitteln kann. Man muss also nicht alles zwingend im Kopf haben.
#3) Die Variable rng ist zurvor nirgends festgelegt (=initialisiert) worden (nur deklariert wurde sie, siehe Dim-Zeile), d.h. die Objekt-Variable ist zwar bekannt gegeben worden, jedoch ist ihr noch nichts zugewiesen worden (ich sage immer gerne, ihr ist noch kein "Leben eingehaucht" worden). Nicht initialisierte Objekt-Variablen haben immer den Wert Nothing. Daraum ist auch kein Zugriff auf deren Methoden wie z.B. der Find-Methode möglich (eine Obstschale mit nichts drauf hat j auch keine Äpfel und sonstiges im Angebot, was man sich nehmen könnte, es ist halt "Nichts da" = Nothing). Die übliche Fehlermeldung lautet dann ca.: "Objektvariable nicht festgelegt".
Gruß
|