Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1140to1144
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
Inhaltsverzeichnis

Shape in bestimmter Zelle löschen

Shape in bestimmter Zelle löschen
Gregor
Hallo zusammen
Mit dem Code

Set SuBe = Worksheets("Tabelle1").Range("A:A").Find("Gregor", LookAt:=xlWhole)
If Not SuBe Is Nothing Then
End if


Suche ich die Zeile mit Gregor und will dann in dieser Zeile Spalte 4 das Shape löschen, sofern vorhanden.
Wie lautet die Fortsetzung dieses Codes?
Vielen Dank
Gregor
AW: Shape in bestimmter Zelle löschen
22.02.2010 16:19:55
Josef
Hallo Gregor,

z.B. so.

Dim SuBe As Range
Dim objShp As Shape

With Worksheets("Tabelle1")
  Set SuBe = .Range("A:A").Find("Gregor", LookAt:=xlWhole)
  If Not SuBe Is Nothing Then
    For Each objShp In .Shapes
      If objShp.TopLeftCell.Row = SuBe.Row And objShp.TopLeftCell.Column = 4 Then
        objShp.Delete
        Exit For
      End If
    Next
  End If
End With

Gruß Sepp

Anzeige
AW: Shape in bestimmter Zelle löschen
22.02.2010 16:20:41
selli
hallo gregor,
ist das ne preisfrage,
was kann man denn bei einsendung der richtigen antwort gewinnen?
gruß selli
gute reise sepp
22.02.2010 16:23:24
selli
mist, sepp war schneller.
karibikkreuzfahrt?
:-)
gruß selli
AW: Shape in bestimmter Zelle löschen
22.02.2010 16:21:11
Rudi
Hallo,
...
For Each shp In Sheets("Tabelle1").Shapes
If shp.TopLeftCell.Address = SuBe.Offset(, 3).Address Then shp.Delete
Next
...

Gruß
Rudi
AW: Shape in bestimmter Zelle löschen
22.02.2010 16:51:37
Gregor
Hallo zusammen
Ich habe beide Vorschläge ausprobiert, aber mein Shape, das zB. beim Suchbegriff "Gregor" in Zelle D4 steht, wird nicht gelöscht.
Was könnte falsch sein?
Gruss Gregor
Anzeige
Das Shape ist nicht in dieser Zeile! owT
22.02.2010 16:56:40
Renee

AW: Shape in bestimmter Zelle löschen
22.02.2010 17:06:03
dieter(drummer)
Hi Gregor,
in der ersten Meldung von dir suchst Du in A:A. Jetzt schreibst Du, dass "Gregor" in D4 steht und nicht gefunden wird. Mein Vorschlag: Suche im ganzen Sheet.
Gruß Dieter(Drummer)
@ dieter
22.02.2010 17:14:20
selli
hallo dieter,
er sucht die zelle mit namen "Gregor" in A:A und will in der betreffenden zeile in spalte D das shape löschen.
gruß selli
AW: Danke Selli für Info. owT
22.02.2010 17:20:14
dieter(drummer)
.
gregor - genau lesen
22.02.2010 17:17:14
selli
hallo gregor,
rudis code sollte doch aber wirklich funktionieren.
wichtig hierbei ist, was auch renee versucht zu sagen, dass die linke obere ecke des shapes sich auch in zelle D4 befindet und nicht etw schon in D3.
gruß selli
Anzeige
AW: gregor - genau lesen
23.02.2010 11:04:34
Gregor
Hallo zusammen
Ja, beide Codes funktionieren tatsächlich, nur geht es ellenlang, bis der Code durchgelaufen ist, da ich im im Blatt in über 2000 Zeilen und mehreren Spalten Shapes habe.
Mit meinem Maktro will ich aufgrund der Abfrage in Spalte A gezielt und schnell Shapes löschen, bzw dann ersetzen. Kann man die Abfrage eingrenzen, damit nicht immer das ganze Blatt "abgefragt" und verglichen wird.
Gruss Gregor
Eingrenzung Range für Shape löschen
23.02.2010 11:22:45
Renee
Hi Gregor,
Eine Eingrenzung geht nicht da die .Shapes-Collection sich immer auf das Ganze Arbeitsblatt bezieht.
GreetZ Renée
AW: Eingrenzung Range für Shape löschen
23.02.2010 11:48:22
Gregor
oK, schade!
Danke und Gruss
Gregor
Anzeige
wie fügst du den die Shapes ein? o.T.
23.02.2010 11:54:00
Josef
Gruß Sepp

AW: wie fügst du den die Shapes ein? o.T.
23.02.2010 14:28:11
Gregor
Hoi Sepp
Hier nun mit eurer Hilfe mein vollständig "gebastelter" Code, der zuerst einige Variablen füllt. Und wie gesagt, die noch eingebaute Löschsequenz kann ich mit den vielen gesetzten Shapes nicht verwenden:
Sub Var1()
Application.ScreenUpdating = False
Application.EnableEvents = False
Quellbaltt = "Tabelle1"
Zielblatt = "Tabelle2"
Spalte_Abkürzung = Sheets(Zielblatt).Rows(1).Find("Abkürzung", LookAt:=xlWhole).Column
intLastRow = Sheets(Quellblatt).Cells(Rows.Count, 1).End(xlUp).Row
Sheets(Zielblatt).Activate
For Start = 1 To intLastRow
Wert = Sheets(Quellblatt).Cells(Start, 1).Value
Hyperlink = Sheets(Quellblatt).Cells(Start, 2).Value
Set SuBe = Sheets(Zielblatt).Range("A:A").Find(Wert, LookAt:=xlWhole)
If Not SuBe Is Nothing Then
Abkürzung = Sheets(Zielblatt).Cells(SuBe.Row, Spalte_Abkürzung).Value
For Each shp In Sheets(Zielblatt).Shapes
If shp.TopLeftCell.Address = SuBe.Offset(, 3).Address Then shp.Delete
Next
End If
ActiveSheet.Shapes("Objekt").Copy
Cells(SuBe.Row, 4).Select
ActiveSheet.Paste
Selection.Name = "Objekt" & Abkürzung
ActiveSheet.Hyperlinks.Add Anchor:=Selection.ShapeRange.Item(1), Address:=Hyperlink
Next
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Gruss gregor
Anzeige
AW: wie fügst du den die Shapes ein? o.T.
23.02.2010 14:58:02
Josef
Hallo Gregor,

als erstes solltest du mal deine Variablen deklarieren und auch gleich den richtigenTyp verwenden.
Wie ich es sehe, gibst du den Shapoes beim Einfügen einen namen mit, den kann man doch zum Löschen auch verwenden.
Ungetestet!

Sub Var1()
  Dim objShTarget As Worksheet, objShSource As Worksheet
  Dim rng As Range
  Dim Wert As String, Hyperlink As String
  Dim lngLast As Long
  
  On Error GoTo ErrExit
  Application.ScreenUpdating = False
  Application.EnableEvents = False
  
  Set objShSource = Sheets("Tabelle1")
  Set objShTarget = Sheets("Tabelle2")
  
  With objShTarget
    Spalte_Abkürzung = .Rows(1).Find("Abkürzung", LookAt:=xlWhole).Column
    lngLast = objShSource.Cells(Rows.Count, 1).End(xlUp).Row
    .Activate
    For Start = 1 To lngLast
      Wert = objShSource.Cells(Start, 1).Value
      Hyperlink = objShSource.Cells(Start, 2).Value
      Set rng = .Range("A:A").Find(Wert, LookAt:=xlWhole)
      If Not rng Is Nothing Then
        Abkürzung = .Cells(rng.Row, Spalte_Abkürzung).Value
        On Error Resume Next
        .Shapes("Objekt" & Abkürzung).Delete
        On Error GoTo ErrExit
      End If
      .Shapes("Objekt").Copy
      .Cells(rng.Row, 4).Select
      .Paste
      Selection.Name = "Objekt" & Abkürzung
      .Hyperlinks.Add Anchor:=Selection.ShapeRange.Item(1), Address:=Hyperlink
    Next
  End With
  ErrExit:
  Application.ScreenUpdating = True
  Application.EnableEvents = True
  
  Set objShSource = Nothing
  Set objShTarget = Nothing
End Sub

Gruß Sepp

Anzeige
Vielen Dank
23.02.2010 15:48:08
Gregor
Hoi Sepp
Da kann ich mich nur recht herzlich bedanken - klappt bestens - und davon eine Lektion zu lernen.
Gruss Gregor

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige