Microsoft Excel

Herbers Excel/VBA-Archiv

Unbestimmten Bereich löschen über Button


Betrifft: Unbestimmten Bereich löschen über Button
von: Fred
Geschrieben am: 10.12.2018 18:17:36

Hallo zusammen

Ich würde gerne einen Bestimmten Bereich löschen und die Werte die darunter stehen sollten dann nach oben nachrutschen.

Der Bereich wäre im aktiven Sheet .
Dort sollte der Bereich A1 bis N10 immer unberührt bleiben.
das Makro sollte Also in Spalte A-N die letzte gefüllte Zelle finden davon dann 10 Zellen nach oben auch erhalten und den Rest löschen so das dann die 10 erhaltenen Zellen bis nach A11-N11 hochrutschen.

ich hoffe das war verständlich

Grüße Fred

  

Betrifft: AW: Unbestimmten Bereich löschen über Button
von: Sepp
Geschrieben am: 10.12.2018 18:44:49

Hallo Fred,

eine Möglichkeit:

Modul Modul1

Option Explicit 
 
Sub loeschen() 
  Dim lngLast As Long 
 
  With ActiveSheet 
    lngLast = lastCell("A:N") 
    If lngLast > 20 Then 
      .Range(.Cells(11, 1), .Cells(lngLast - 10, 1)).EntireRow.Delete 
    End If 
  End With 
End Sub 
 
Private Function lastCell(ByVal RangeAddress As String, Optional ByVal lastRow As Boolean = True) As Long 
  Dim varLast As Variant 
 
  If lastRow Then 
    varLast = Evaluate("MAX(IF(" & RangeAddress & "<>"""",ROW(" & RangeAddress & ")))") 
  Else 
    varLast = Evaluate("MAX(IF(" & RangeAddress & "<>"""",COLUMN(" & RangeAddress & ")))") 
  End If 
 
  If IsError(varLast) Then 
    lastCell = -1 
  Else 
    lastCell = varLast 
  End If 
End Function 


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0





 ABCDEF
1Gruß Sepp
2
3



  

Betrifft: AW: Unbestimmten Bereich löschen über Button
von: Fred
Geschrieben am: 10.12.2018 18:53:49

Hallo Sepp
Vielen dank für Deine schnelle Antwort. leider funktioniert sie nicht. Wenn ich das löschmakro ausführe passiert leider nichts. es kommt auch keine Fehlermeldung.

Grüße Fred


  

Betrifft: AW: Unbestimmten Bereich löschen über Button
von: Sepp
Geschrieben am: 10.12.2018 18:56:52

Hallo Fred,

bei mir funktioniert es, also wird wohl deine Beschreibung ungenügend sein.

Lade die Datei mit dem Code hoch in der es nicht funktioniert,


 ABCDEF
1Gruß Sepp
2
3



  

Betrifft: AW: Unbestimmten Bereich löschen über Button
von: Fred
Geschrieben am: 10.12.2018 19:03:53

Hallo Sepp

Anbei mal eine abgespeckte datei da gehts auch nicht.
http://www.herber.de/bbs/user/125998.xls
grüße Fred


  

Betrifft: AW: Unbestimmten Bereich löschen über Button
von: Sepp
Geschrieben am: 10.12.2018 19:10:00

Hallo Fred,

so sieht die Tabelle nach dem Ausführen des Codes aus (habe nichts verändert!).

Werte

 ABCD
40000
9DatumHCL- Tank 1FE- Tank 1HCL -Tank 6
10 am 09.12.18 -13: 13: 4212530165,00
11 am 09.12.18 -13: 14: 10128,00 ?30200,00 ?
12 am 09.12.18 -13: 14: 29125,00 ?36165,00
13 am 09.12.18 -13: 25: 40130,00 ?25185,00 ?
14 am 10.12.18 -16: 58: 52130,00 ?28189,00 ?
15 am 09.12.18 -13: 13: 4212530165,00
16 am 09.12.18 -13: 13: 4212830200,00 ?
17 am 09.12.18 -13: 14: 10128,00 ?30200,00 ?
18 am 09.12.18 -13: 14: 29125,00 ?36165,00
19 am 09.12.18 -13: 25: 40130,00 ?25185,00 ?
20 am 10.12.18 -16: 58: 52130,00 ?28189,00 ?
21    
22    
23    


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8




 ABCDEF
1Gruß Sepp
2
3



  

Betrifft: AW: Unbestimmten Bereich löschen über Button
von: Fred
Geschrieben am: 10.12.2018 19:12:45

Hallo Sepp

bei mir geht es nicht .benutzt Du vieleicht eine höhere office version? ich benutze 2003
Grüße Fred


  

Betrifft: AW: Unbestimmten Bereich löschen über Button
von: Sepp
Geschrieben am: 10.12.2018 19:27:07

Hallo Fred,

probier mal

Sub loeschen()
  Dim lngLast As Long

  With ActiveSheet
    lngLast = lastCell("A1:N10000")
    If lngLast > 20 Then
      .Range(.Cells(11, 1), .Cells(lngLast - 10, 1)).EntireRow.Delete
    End If
  End With
End Sub

Private Function lastCell(ByVal RangeAddress As String, Optional ByVal lastRow As Boolean = True) As Long
  Dim varLast As Variant

  If lastRow Then
    varLast = Evaluate("MAX(IF(" & RangeAddress & "<>"""",ROW(" & RangeAddress & ")))")
  Else
    varLast = Evaluate("MAX(IF(" & RangeAddress & "<>"""",COLUMN(" & RangeAddress & ")))")
  End If

  If IsError(varLast) Then
    lastCell = -1
  Else
    lastCell = varLast
  End If
End Function


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Wenn man die letzte benutzte Zeile auch an der Spalte A festmachen kann, dann genügt.

Sub loeschen()
  Dim lngLast As Long

  With ActiveSheet
    lngLast = Application.Max(20, .Cells(.Rows.Count, 1).End(xlUp).Row)
    If lngLast > 20 Then
      .Range(.Cells(11, 1), .Cells(lngLast - 10, 1)).EntireRow.Delete
    End If
  End With
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3



  

Betrifft: AW: Unbestimmten Bereich löschen über Button
von: Fred
Geschrieben am: 10.12.2018 19:33:44

Hallo Sepp

Der 2 te Code funktioniert super. Vielen Dank dafür

Grüße Fred


  

Betrifft: AW: Unbestimmten Bereich löschen über Button
von: Fred
Geschrieben am: 10.12.2018 19:35:16

Nachtrag

es funktionieren beide Codes gut vielen Dank.

Grüße Fred