Zuerst sah meine Unter wie folgt aus:Verwenden Sie mich. in Funktionen
Sub DeleteGraph()
For Each objCht In Me.ChartObjects
For Each s In objCht.Chart.SeriesCollection
s.Delete
Next s
Next objCht
End Sub
Dies funktionierte nicht, wenn sie von dem Hauptcode wegen Me genannt.
Dann habe ich versucht, dies:
Sub Main()
Dim test As Worksheet
Set test = Me.CodeName
DeleteGraph test
End sub
Sub DeleteGraph(sheets As Worksheet)
For Each objCht In sheets.ChartObjects
For Each s In objCht.Chart.SeriesCollection
s.Delete
Next s
Next objCht
End Sub
Das ist nicht von der Arbeit „Set test = Me.CodeName“
ich um das Web durchsucht und herausgefunden, dass ich 'wahrscheinlich verwenden CallByName ', aber ich kann es scheinbar nicht funktionieren lassen. Ist das der richtige Ansatz und wenn ja, wie?
Vielen Dank!
Warum nicht einfach 'ActiveSheet' verwenden? Welches Objekt soll "Ich" darstellen, wenn es nicht das aktive Blatt ist? –
Ich denke, es könnte funktionieren, aber ich bin einfach nicht glücklich darüber, 'ActiveSheet' zu verwenden. Gibt es eine Möglichkeit, es ohne Active Sheet arbeiten zu lassen? – Mobz
Sie könnten den Arbeitsblattnamen natürlich fest codieren, aber "ActiveSheet" einmal ganz am Anfang aufzurufen, um es in eine Variable zu ziehen, ist nicht schlecht - d. H. "Set test = ActiveSheet". – Comintern