HERBERS Excel-Forum - das Archiv
Vereinfachung
Ernst

Guten Abend Forum
Mit dem unten stehenden Code lösche ich per doppelklick 20 Zeilen immer ausgehend von einer bestimmten Zelle G. Kann man den unten stehenden Code vereinfachen?
mfg
Ernst Dunkel

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Doppelklick auf G213, G253, G273, G293, G313, G.... letztes G793
'löscht 20 Zeilen, d.h., z.B. G213 = ab Zeile 213 plus 19 Zeilen dazu
Worksheets("S").Unprotect ("")
If Not Intersect(Target, [G213,G233,G253,G273,G293,G313]) Is Nothing Then
Range(ActiveCell, ActiveCell.Offset(0, -6).Range("20:20")).Delete Shift:=xlUp
'Von der aktiven Celle z.B. G213 sechs Spalten nach links, dann werden 20 Zeilen
'markiert und gelöscht
Cancel = True
End If
End Sub

Nachgefragt
Matthias

Hallo
Zitat
'Von der aktiven Celle z.B. G213 sechs Spalten nach links, dann werden 20 Zeilen
'markiert und gelöscht.
Warum gehst Du denn erst 6 Spalten nach links?
Bist Du sicher das Du Zeilen löschen willst?
Oder meinst Du in diesem Beispiel 20 Zellen in Spalte A ?
Userbild
Gruß Matthias
AW: Nachgefragt
Ernst

Hallo Matthias
Mit Doppelcklik z.B. auf G213 werden insgesammt 20 Zeilen gelöscht. Der Code funktioniert bestens! Jedoch muss ich jede Zelle im Code angeben z.B. G213, G253 bis G793 (20 iger Schritte) als 30 mal und dies finde ich mühsam.
Versuch
Matthias

Hallo
probier mal: (bitte an einer Kopie)
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim zeile As Long
For zeile = 213 To 793 Step 20
If Target.Row = zeile Then
Range(ActiveCell, ActiveCell.Offset(0, -6).Range("20:20")).Delete Shift:=xlUp
Exit For
End If
Next
Cancel = True
End Sub


Man Zeilen auch direkt mit .Row ansprechen.
Gruß Matthias
Korrektur ...
Matthias

Hall
Damit es auch nur in Spalte G passiert.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim zeile As Long
If Target.Column = 7 Then
For zeile = 213 To 793 Step 20
If Target.Row = zeile Then
Rows(Target.Row & ":" & Target.Row + 19).Delete Shift:=xlUp
Exit For
End If
Next
End If
Cancel = True
End Sub
GRuß Matthias
AW: Korrektur ...
Ernst

Hallo Matthias
Erster Code ist schon richtig. Denn mit -6 bist du in Spalte G!
Nein ! Klick mal auf F213 nimm Bsp.2! kwT
Matthias

AW: Nein ! Klick mal auf F213 nimm Bsp.2! kwT
Ernst

Hallo Matthias
Hatte Spalte F geschützt, hast recht.
mfg
Ernst Dunkel
AW: Versuch
Ernst

Hallo Matthias
Vielen Dank, es funktioniert genau so wie ich es möchte.
Wünsche Dir einen schönen Abend
mfg
Ernst Dunkel