Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
248to252
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
248to252
248to252
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Delete nur mit ActiveSheet warum?

Delete nur mit ActiveSheet warum?
30.04.2003 18:12:43
Wolfgang
Hallo,
ich möchte das aktivieren eines Sheets verhindern. Der folgende Code läuft aber nur mit:
ActiveSheet.Shapes(b).Delete
Warum nicht mit:
Sheets("Tabelle1").Shapes(b).Delete

Kann ich den 2.Code modifizieren oder geht es wirklich nur mit Active?
Danke für jeden Tip.
Gruß
Wolfgang

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Delete nur mit ActiveSheet warum?
30.04.2003 18:54:21
Knut

Das geht problemlos, wenn die Variable b stimmt.
Knut

Variable ist doch immer gleich
30.04.2003 19:04:30
Wolfgang

Hallo Knut,
ob ich Active nehme oder das Sheet dirket anspreche, die Variable hat doch immer den gleichen Inhalt.
Wie könnte sie sich von dem einen zum anderen Code denn verändern? In beiden Fällen hat sie den Wert "5".
Oder mache ich einen Gedankenfehler, dann gib mir bitte einen Hinweis auf meinen Irrtum.
Gruß
Wolfgang


Re: Variable ist doch immer gleich
30.04.2003 19:12:52
jolly

Hallo Knut,
es müsste Worksheets("Tabelle1")..... lauten.
Oder lieg ich falsch?

Gruß
jolly

Bleibt sich gleich
30.04.2003 19:16:49
Wolfgang

Hallo jolly,
ob so oder so, die Funktion läuft nicht.
Gruß
Wolfgang

Anzeige
Re: Bleibt sich gleich
30.04.2003 19:29:32
jolly

ist dann ActiveSheet = Tabelle1?

Korrekt
30.04.2003 19:40:59
Wolfgang

o.T.

keine Ahnung. Bei mir funktioniert es
30.04.2003 19:53:59
jolly

o.T.

Hier der Gesamtcode
30.04.2003 20:22:38
Wolfgang

Hallo Jolly,
hier der Code den ich bisher verwendet habe (Der funzt!):

Sub ObjektLoeschen()
Dim a As Integer, b As Integer, Test As String
On Error GoTo Nonexist
a = ActiveSheet.Shapes.Count
For b = 1 To a
Test = Left(ActiveSheet.Shapes(b).Name, 7)
If Test = "Picture" Then GoTo BleibtErhalten
If a = 0 Then Exit Sub
ActiveSheet.Shapes(b).Delete
BleibtErhalten:
Next b
Nonexist:
End Sub

Der gleiche Code mit direktem Zugriff:
Sub ObjektLoeschen()
On Error GoTo Nonexist
a = Sheets("ST" & intCounter).Shapes.Count
For b = 1 To a
z = Left(Sheets("ST" & intCounter).Shapes(b).Name, 7)
If z = "Picture" Then GoTo BleibtErhalten
If a = 0 Then Exit Sub
Worksheets("ST" & intCounter).Shapes(b).Delete
BleibtErhalten:
Next b
Nonexist:
End Sub

Der Code bleibt bei der Delete-Anweisung hängen....

Gruß
Wolfgang

Anzeige
Re: Hier der Gesamtcode
30.04.2003 20:32:11
Knut

a = Sheets("ST" & intCounter)

intCounter hat in deinem Code nirgens ein Wertzuweisung.
Knut

Hat Knut recht? Ich hoffe ~~~
30.04.2003 20:57:00
jolly

o.T.

Re: Hat Knut recht? Ich hoffe ~~~
30.04.2003 22:14:07
Knut

das funzt auch, obwohl der Code natürlich chaotisch ist.
Knut

Chaos mit System
30.04.2003 23:28:14
Wolfgang

Hallo Knut,
war so ziemlich mein erster Code als ich vor 3 Monaten mit VBA anfing. Aber die Frage ist letztlich immer noch offen. Ich mag nicht glauben, dass er so bei dir oder wo immer läuft. Bis auf die Zuweisung intCounter, die vorher schon erfolgte handelt es sich um den Originalcode der einmal läuft und eben einmal nicht.
Ich erhalte einen Laufzeitfehler 104, was immer das auch ist.
Wie Du auch erkennen kannst wird die Variable immer aus Next gebildet. Bei 5 ist die If Bedingung erfüllt und Delete angesagt.
Gruß
Wolfgang

Anzeige
Chaos mit System!!!!!!!!
01.05.2003 00:08:15
jolly

Also irgendwie ist das doch sehr komisch.
Bei mir läuft es auch mit direkter Adressierung eines Worksheets.

Löschen tut er aber nur jede 2. Shape..... warum?
Nimmt zuerst "Line 1" dann "Line 3".
Wert von Variable a ist ok und b zählt auch normal hoch.

Gruß
jolly

Re: Chaos mit System!!!!!!!!
01.05.2003 00:19:08
jolly

komisch, sorum läuft der bei mir richtig....
Warum????

Gruß
jolly

Sub ObjektLoeschen()
Dim a As Integer, b As Integer, Test As String
Dim i%
i = 3 'Tabelle3
On Error GoTo Nonexist
a = Sheets("Tabelle" & i).Shapes.Count
For b = a To 0 Step -1
test1 = Left(Sheets("Tabelle" & i).Shapes(b).Name, 7)
If Test <> "Picture" Then
If a = 0 Then
Exit Sub
End If
Sheets("Tabelle" & i).Shapes(b).Delete
End If
Next b
Nonexist:
End Sub

Anzeige
Re: Chaos mit System!!!!!!!! - sauberer
01.05.2003 00:23:18
jolly

Ich glaub der Code ist sauberer.. jolly

Sub ObjektLoeschen()
Dim a As Integer, b As Integer, Test As String
Dim i%
i = 3
a = Sheets("Tabelle" & i).Shapes.Count
If a = 0 Then
Exit Sub
End If
For b = a To 0 Step -1
test1 = Left(Sheets("Tabelle" & i).Shapes(b).Name, 7)
If Test <> "Picture" Then
Sheets("Tabelle" & i).Shapes(b).Delete
End If
Next b
End Sub

Neuer Versuch
01.05.2003 11:26:00
Wolfgang

Hallo jolly ,hallo Knut,
vorab erstmal Danke für die Hinweise. In der Sache bin ich aber leider keinen Schritt weiter.
Habe das Chaos heute morgen selber geordnet, hier ist der saubere Stand. Der Code ist eingebunden in ein Makro deshalb ohne weitere Deklarationen.
i = 3
a = Sheets("Tabelle" & i).Shapes.Count
For b = 1 To a
z = Left(Sheets("Tabelle" & i).Shapes(b).Name, 7)
If z <> "Picture" Then _
Sheets("Tabelle" & i).Shapes(b).Delete
Next b

Zusatzerklärung: In der Tabelle3 sind immer 5 Picture und ein Object. Die Reihenfolge ist immer gleich, das Object liegt immer an der letzten Stelle im Moment immer auf Platz 6.
Auch wenn ich Euren Code von hinten aufzäume und das Object zuerst erhalte bekomme ich wie auch im Original bei der Delete Anweisung den:

Laufzeitfehler 1004 'Anwendungs- oder Objektdefinierter Fehler'

Ich bitte um Verständnis für meine Hartnäckigkeit, aber ich habe bereits im ersten Threat nur auf diesen Zustand hingewiesen.
Also warum funzt die Anweisung mit Delete nicht???

Gruß
Wolfgang


Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige