Grafiken in einem bestimmten Bereich löschen

Hallo…

hab das Problem (siehe unten) jetzt behoben bekommen, stehe aber vor einer neuen Aufgabe.

Wenn ich bei mir in O5-O19 ein „+“ oder „-“ eingebe, erscheint in K5-K19 ein Haken oder ein Kreuz (als GIF-Grafik). Soweit bin ich, klappt wunderbar.
Wenn ich die Werte in Spalte O allerdings änder und das Makro neu ausführe, überschreibt er die Grafiken, ohne sie zu löschen, d.h., ich habe nach 10 ausführungen 10 Grafiken übereinander liegen!

Also meine Frage: wie kann ich die Grafiken aus einem ganzen Bereich (bsp. B6:C20 oder eben K5:K19) löschen?

Danke auch jetzt schonmal für eure Hilfe.

Hallo Bery.

Wenn Du die Grafiken von Hand markieren kannst, dann zeichne doch ein Makro auf und lösche die Grafiken 'mal von Hand. Danach sollte Dir der Code zur Verfügung stehen und Du kannst ihn anpassen.

Vielleicht lassen sich die Grafiken per „Visible“-Eigenschaft ein- und ausblenden. Das wäre doch auch sinnvoller als immer neue Grafiken zu laden.

Müssen es denn überhaupt Grafiken sein? Vielleicht reicht schon die richtige Schriftart. Z.B. sind in „Webdings“ die Buchstaben „a“ ein Häkchen und „r“ ein Kreuz.

VG
Carsten

Danke für deine Antworten!

allerdings…

Müssen es denn überhaupt Grafiken sein? Vielleicht reicht
schon die richtige Schriftart. Z.B. sind in „Webdings“ die
Buchstaben „a“ ein Häkchen und „r“ ein Kreuz.

ja, es sieht einfach besser aus! Schrift- und Hintergrundformatierung bringt da auch nichts.

Wenn Du die Grafiken von Hand markieren kannst, dann zeichne
doch ein Makro auf und lösche die Grafiken 'mal von Hand.
Danach sollte Dir der Code zur Verfügung stehen und Du kannst
ihn anpassen.

Problem: Ich habe den Haken in B50 und das Kreuz in B51 liegen, von dort aus kopiere ich sie und füge sie per Makro in die entsprechende Zeile ein, alle Haken heißen also „Haken“, alle Kreuze „Kreuz“. Wenn ich den Befehle gebe „Lösche Haken“ werden ja alle auch gelöscht, aber auch der in B50! (Deswegen in einem bestimmten Bereich löschen)

Vielleicht lassen sich die Grafiken per „Visible“-Eigenschaft
ein- und ausblenden. Das wäre doch auch sinnvoller als immer
neue Grafiken zu laden.

Ich habs probiert, bin leider kläglich gescheitert :frowning: deswegen will ich das lieber sein lassen. Außerdem kann man den Lösch-Vorgang häufiger gebrauchen.

Ich hoffe ich konnte euch noch ein paar Infos zu meinem Problem geben und hoffe, dass ihr mir jetzt besser helfen könnt

Gruß, Bery

Wenn ich bei mir in O5-O19 ein „+“ oder „-“ eingebe, erscheint
in K5-K19 ein Haken oder ein Kreuz (als GIF-Grafik). Soweit
bin ich, klappt wunderbar.
Wenn ich die Werte in Spalte O allerdings änder und das Makro
neu ausführe, überschreibt er die Grafiken, ohne sie zu
löschen, d.h., ich habe nach 10 ausführungen 10 Grafiken
übereinander liegen!

Also meine Frage: wie kann ich die Grafiken aus einem ganzen
Bereich (bsp. B6:C20 oder eben K5:K19) löschen?

Hi Bery,

zeige mal den vorhandenen Code.

Lade mal eine Beispielmappe hoch mit FAQ:2861 dann kann man den neuen Code gleich angepasst basteln.

Zur Frage, ein Weg ist die TopLeftCell jeder Grafik auszulesen, wenn die TopLeftCell im Löschbereich liegt dann die Grafik löschen.

Gruß
Reinhard

Danke auch dir für die Antwort,

Aber mir wärs lieb wenn ich eine allgemeine Formel bekommen würde, z.B. für „Lösche alle Grafiken aus D5:N19“ und ich diese dann selber anpassen kann, weil ich diese noch öfters brauchen werde und es mir dann wenig bringt, wenn alles einmal funktioniert, nur ich weiss nicht wie…

Trotzdem der Teil, in dem die Grafik kopiert und eingefügt wird:

|If ActiveSheet.Range(„O“ & zeile).Value = „+“ Then
|
| Range(„K5:K19“).Select
| ActiveSheet.Shapes(„Haken“).Select
| Selection.Copy
|
| Range(„K“ & zeile).Select
| ActiveSheet.Paste
|
| Else
|
| ActiveSheet.Shapes(„Kreuz“).Select
| Selection.Copy
|
| Range(„K“ & zeile).Select
| ActiveSheet.Paste

und ich habe jetzt an einen Zusatz wie

| ActiveSheet.Range(„D5:N19“).Shapes(„Kreuz“ & „Haken“).Select
| Selection.Delete

gedacht (was aber leider nicht so tut),
Ich weiß nämlich auch nicht, ob es einen Befehl wie Topleftcell auch für die untere rechte gibt.

Grüße

Aber mir wärs lieb wenn ich eine allgemeine Formel bekommen
würde, z.B. für „Lösche alle Grafiken aus D5:N19“ und ich
diese dann selber anpassen kann, weil ich diese noch öfters
brauchen werde und es mir dann wenig bringt, wenn alles einmal
funktioniert, nur ich weiss nicht wie…

Hi Bery,

warum zeigst du nicht den ganzen relevanten Code?

Die ganzen Select kannste rauswerfen. Und, wenn du das Angebot eine Beispielmappe hochzuladen nicht annimmst, tja nun…

ungetestet:

Sub Test()
Call Loesche(Range("O5:open\_mouth:19"))
End Sub
'
Sub Loesche(Bereich As Range)
Dim S As Shape
For Each S In ActiveSheet.Shapes
 If Not Intersect(Bereich, S.TopLeftCell) Is Nothing Then
 If S.Name Like "Haken\*" Or S.Name Like "Kreuz\*" Then S.Delete
 End If
Next S
End Sub

Gruß
Reinhard

warum zeigst du nicht den ganzen relevanten Code?

Die ganzen Select kannste rauswerfen. Und, wenn du das Angebot
eine Beispielmappe hochzuladen nicht annimmst, tja nun…

Es geht hier zwar AUCH um die angesprochene Mappe, aber nicht NUR! Ich will mich ja nicht über deine Hilfe beschweren, im Gegenteil, ich freu mich über alle Antworten! Trotzdem brauche ich eine allgemeine Formel. Und wenn man alle Grafiken in einem Tabellenblatt löschen kann, dann kann man doch auch alle Grafiken in einem Bereich löschen, unabhängig vom ganzen drumherum, ebenso wie man das mit Zellen machen kann, oder hab ich da Unrecht? (dann korrigiere mich bitte)

Dein Code funktioniert übrigens leider nicht, zumindest kann ich ihn nicht einfach anpassen (wahrscheinlich zu kmpliziert für mich^^) (Bildnamen angeben, Bereich angeben > das sollte es gewesen sein)

Gruß
Reinhard

Ebenso :wink:

Dein Code funktioniert übrigens leider nicht, zumindest kann
ich ihn nicht einfach anpassen (wahrscheinlich zu kmpliziert
für mich^^) (Bildnamen angeben, Bereich angeben > das
sollte es gewesen sein)

Hi Bery,

in der Prozedur Test gibst du den gewünschten Bereich und den Bildnamen an, dann die Prozedur Test ausführen lassen.
Bildnamen gibt es nicht mehrfach, wenn haben sie einen Index hinten, also Haken1Haken2,Haken3 usw., deshlab der Vergleich mittels LIKE.

Die Prozedur Test2 löscht alle Bilder unabhängig vom Bildernamen deren linke obere Ecke über einer Zelle im gerade markierten Zellbereich steht.
Sind in dem markieretn Zellbereich z.B. Schaltflächen, Kontrollkästchen o.ä. werden die genauso beseitigt.



Sub Test()
Call Loesche(„O5:open_mouth:19“, „Haken“)
End Sub

Sub Loesche(strBereich As String, Bildname As String)
Dim S As Shape
For Each S In ActiveSheet.Shapes
If Not Intersect(Range(strBereich), S.TopLeftCell) Is Nothing Then
If S.Name Like Bildname & „*“ Then S.Delete
End If
Next S
End Sub

Sub Test2()
Dim S As Shape
For Each S In ActiveSheet.Shapes
If Not Intersect(Selection, S.TopLeftCell) Is Nothing Then
S.Delete
End If
Next S
End Sub




Gruß
Reinhard

Reinhard? Du bist ein Schatz! =)

Die Prozedur Test2 löscht alle Bilder unabhängig vom
Bildernamen deren linke obere Ecke über einer Zelle im
gerade markierten Zellbereich steht.
Sind in dem markieretn Zellbereich z.B. Schaltflächen,
Kontrollkästchen o.ä. werden die genauso beseitigt.

Ich hab jetzt folgendes laufen:

Sub Test2()
Dim S As Shape
For Each S In ActiveSheet.Shapes
If Not Intersect(Range(„D5:N19“), S.TopLeftCell) Is Nothing Then
S.Delete
End If
Next S
End Sub

Und jetzt werden alle Grafiken nur in diesem Bereich (D5:N19) gelöscht! hab Testweise auch Grafiken in A1, E2 und P22 geladen, alle sind dageblieben :smile:

Nochmals Dankeschön