Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1156to1160
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

Bilder löschen

Bilder löschen
Ernst
Guten Abend Formum
Habe ein Problem mit Löschen von Bildern.
Mit Doppelklick aus der Zelle B202, B219, B236, etc. möchte ich die Bilder drei Zeilen unter der Aktivenzelle löschen (D204, L204, D21, L21, etc.). Bei meinem Code löscht es alle Bilder in der Tabelle.
Was mache ich Falsch.
Bitte um Hilfe.
Ernst Dunkel
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim objShp As Shape
Dim rng As Range
Dim lngMax As Long, lngMin As Long
On Error Resume Next
'Löschen des Bildes
Application.ScreenUpdating = False
With Worksheets("U-Value")
If Not Intersect(Target, [B202,B219,B236,B253,B270,B287,B304,B321,B338,B355,B372,B389,B406, _
B423,B440]) Is Nothing Then
For Each objShp In .Shapes
If Left(objShp.Name, 3) = "pic" Then
If Not Intersect(rng, objShp.TopLeftCell) Is Nothing Then
objShp.Delete
End If
End If
Next
Application.ScreenUpdating = True
End If
End With
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Bilder löschen
15.05.2010 22:53:52
Ramses
Hallo
"...If Not Intersect(rng, objShp.TopLeftCell) Is Nothing Then..."
Wo ist der "rng"-Bereich definiert ?
Gruss Rainer
AW: Bilder löschen
16.05.2010 10:12:05
Ernst
Guten Tag Ramses, vielen Dank für Deine Nachfrage.
Der vollständige Code unten funktioniert ausser dem Löschen der Bilder!
Kannst Du mir den Fehler finden?
mfg
Ernst Dunkel
Private Sub worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
On Error Resume Next
'Doppelklick auf D11 bis D18 und D.. löscht Zellen D bis G
If Not Intersect(Target, [D11:D18,D29:D36,D47:D54,D65:D72,D83:D90,D101:D108,D119:D126,D137: _
D144,D155:D162,D173:D180,D191:D198,D208:D215,D225:D232,D242:D249,d259:d2662,d276:d283,d293:d300,d310:d317,d327:d334,d344:d351,d361:d368,d378:d385,d395:d402,d412:d419,d429:d436,d4446:d453]) Is Nothing Then
Application.EnableEvents = False
Range(Cells(Target.Row, 4), Cells(Target.Row, 9)).ClearContents
Application.EnableEvents = True
End If
Cancel = True
'Doppelklick auf L11 bis L18 und L.. löscht Zellen D bis G
If Not Intersect(Target, [L11:L18,L29:L36,L47:L54,L65:L72,L83:L90,L101:L108,L119:L126,L137: _
L144,L155:L162,L173:L180,   L191:L198,L208:L215,L225:L232,L242:L249,L259:L266,L276:L283,L293:L300,L310:L317,L327:L334,L344:L351,L361:L368,L378:L385,L395:L402,L412:L419,L429:L436,L446:L453]) Is Nothing Then
Application.EnableEvents = False
Range(Cells(Target.Row, 12), Cells(Target.Row, 15)).ClearContents
Application.EnableEvents = True
End If
Cancel = True
'Doppelklick auf D6,D24, D42 L7 und D10,D24 wir die UF1 geöffnet (OK)
If Not Intersect(Target, [D6,D24,D42,D60,D78,D96,D114,D132,D150,D168,D187,L187,   D204,L204, _
D221,L221,D238,L238,D255,L255,D272,L272,D289,L289,D306,L306,D323,L323,D340,L340,D357,L357,D374,L374,D391,L391,D408,L408,D425,L425,D442,L442]) Is Nothing Then
UserForm1_1.Show
End If
'Löschen des Bildes
Dim objShp As Shape
Dim rng As Range
Dim lngMax As Long, lngMin As Long
Application.ScreenUpdating = False
With Worksheets("U-Value")
.Unprotect ("^~`")
If Not Intersect(Target, [B202,B219,B236,B253,B270,B287,B304,B321,B338,B355,B372,B389,B406,B423, _
B440]) Is Nothing Then
Target.Resize(17, 1).EntireRow.Delete 'ab Zelle B202 oder B... wird der Bereich von 17 Zeilen  _
gelöscht
lngMax = Application.Max(202, .Cells(Rows.Count, 1).End(xlUp).Row - 14)
lngMin = lngMax - 14
Set rng = Union(.Range(.Cells(lngMin, 4), .Cells(lngMax, 4)), _
.Range(.Cells(lngMin, -12), .Cells(lngMax, -12)))
For Each objShp In .Shapes
If Left(objShp.Name, 3) = "pic" Then
If Not Intersect(rng, objShp.TopLeftCell) Is Nothing Then
objShp.Delete
End If
End If
Next
Application.ScreenUpdating = True
Worksheets("U-Value").Protect ("^~`")
End If
End With
End Sub

Anzeige
AW: Bilder löschen
17.05.2010 23:04:01
fcs
Hallo Ernst,
deaktivere als erstes mal vorrübergehend die Zeile
On Error Resume Next
Dann kannst du wenigstens feststellen, an welcher Position deine Prozedur ins Stoppern kommt.
Ich tippe mal, dass folgende Zeile Probleme macht:
Set rng = Union(.Range(.Cells(lngMin, 4), .Cells(lngMax, 4)), _
.Range(.Cells(lngMin, -12), .Cells(lngMax, -12)))
Die -12 als Nummer für eine Spalte funktioniert nicht, wenn das zugehörige Objekt ein Tabellenblatt ist.
Gruß
Franz
AW: Bilder löschen
17.05.2010 23:21:51
Ernst
Hallo Franz
Der Code kommt nicht ins Stolpern.
Es löscht alle Bilder in der Tabelle, dabei sollte es nur die Bilder 3 Zeilen unterhalb der Aktiven sein.
Anzeige
AW: Bilder löschen
18.05.2010 13:20:55
fcs
Hallo Ernst,
Durch die Zeile
On Error Resume Next
werden die in der Prozedur auftretenden Fehler ignoriert und das Makro macht einfach mit der nächsten Zeile weiter - kommt also auch nicht ins "stolpern". Deswegen mein Vorschlag, diese Zeile mal zu deaktivieren.
Die von mir angesprochene Zeile verursacht einen Fehler und rng bleibt Nothing.
In der If-Prüfung in der For-Next-Schleife verursacht der 1. Fehler einen Folgefehler und die Löschaktion erfolgt erfolgt bei allen Shapes die pic.... heißen - unabhängig von der Zellposition.
Da ich nicht weiss, was du mit -12 als Spaltennummer bezwecken willst, kann ich dir auch nicht konkreter helfen.
Gruß
Franz
Anzeige
AW: Bilder löschen
19.05.2010 21:06:22
Ernst
Hallo Franz
vielen Dank für Deine Erläuterungen und Hinweise.
Wie würdest Du die Bilder mittles Doppelklick drei Zeilen unter der Aktiven Zelle löschen?
mfg
Ernst Dunkel
AW: Bilder löschen
20.05.2010 00:46:18
fcs
Hallo Ernst,
eigentlich must du "nur" dem Objekt rng den richtigen Zellbereich zuordnen. Ich hab auch die Prüfung der Targetzelle etwas angepasst.
Gruß
Franz
  'Löschen des Bildes
Dim objShp As Shape
Dim rng As Range
Dim lngMax As Long, lngMin As Long
Application.ScreenUpdating = False
With Worksheets("U-Value")
If Target.Column = 2 Then 'Spalte B
Select Case Target.Row
Case 202, 219, 236, 253, 270, 287, 304, 321, 338, 355, 372, 389, 406, _
423, 440
.Unprotect ("^~`")
lngMin = Target.Row
lngMax = Target.Row + 16
'Bereich mit den zulöschenden Bildern - Spalten D bis L (4 bis 12)
Set rng = .Range(.Cells(lngMin, 4), .Cells(lngMax, 12))
For Each objShp In .Shapes
If Left(objShp.Name, 3) = "pic" Then
If Not Intersect(rng, objShp.TopLeftCell) Is Nothing Then
objShp.Delete
End If
End If
Next
Target.Resize(17, 1).EntireRow.Delete 'ab Zelle B202 oder B... wird der _
Bereich von 17 Zeilen gelöscht
Application.ScreenUpdating = True
.Protect ("^~`")
End Select
End If
End With

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige