Microsoft Excel

Herbers Excel/VBA-Archiv

Vereinfachung | Herbers Excel-Forum


Betrifft: Vereinfachung von: Ernst Dunkel
Geschrieben am: 29.11.2009 16:15:24

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

  

Betrifft: Nachgefragt von: Matthias L
Geschrieben am: 29.11.2009 17:16:15

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 ?



Gruß Matthias


  

Betrifft: AW: Nachgefragt von: Ernst Dunkel
Geschrieben am: 29.11.2009 17:37:19

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.


  

Betrifft: Versuch von: Matthias L
Geschrieben am: 29.11.2009 18:02:52

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


  

Betrifft: Korrektur ... von: Matthias L
Geschrieben am: 29.11.2009 18:15:23

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


  

Betrifft: AW: Korrektur ... von: Ernst Dunkel
Geschrieben am: 29.11.2009 18:22:48

Hallo Matthias
Erster Code ist schon richtig. Denn mit -6 bist du in Spalte G!


  

Betrifft: Nein ! Klick mal auf F213 nimm Bsp.2! kwT von: Matthias L
Geschrieben am: 29.11.2009 18:25:48




  

Betrifft: AW: Nein ! Klick mal auf F213 nimm Bsp.2! kwT von: Ernst Dunkel
Geschrieben am: 29.11.2009 18:31:23

Hallo Matthias
Hatte Spalte F geschützt, hast recht.

mfg
Ernst Dunkel


  

Betrifft: AW: Versuch von: Ernst Dunkel
Geschrieben am: 29.11.2009 18:17:25

Hallo Matthias
Vielen Dank, es funktioniert genau so wie ich es möchte.

Wünsche Dir einen schönen Abend

mfg
Ernst Dunkel