2017-06-16 2 views
1

Ich habe Probleme mit Visual Basic in Excel, um alle Zeilen im Blatt mit Ausnahme der ersten sechs Zeilen vollständig zu löschen. Hier erläutern ich meinen Code mit einer Befehlsschaltfläche zugeordnet:Löschen von Zeilen TOTAL außer ersten

Dim i As Integer 
Dim tot_rows As Integer 

tot_rows = ThisWorkbook.Sheets("NAME").UsedRange.Rows.Count 
With Worksheets("NAME") 

For i = tot_rows To 6 Step -1 
     .Rows(i).ClearContents 
     .Rows(i).EntireRow.Delete 
Next i 

Wenn ich den Code ausführen es nicht eine einzelne Zeile nicht löschen, können Sie mir sagen, warum? tot_rows ist immer gleich 401 (und im Blatt kann ich 401 Zeilen sehen, also nehme ich an, es ist richtig). Könnte mehr als 401 Reihen sein, die ich visuell nicht sehen kann?

Vielen Dank für jede Hilfe, ich

+0

Nur um sicher zu sein, da der Code gut aussieht, sind Sie sicher, dass 'tot_rows 'richtig eingestellt ist. Kannst du einen Breakpoint (F9) auf deine 'With'-Zeile setzen, den Code ausführen und den Wert von' tot_rows' in deinem Locals-Bereich überprüfen (Ansicht verwenden >> Locals), falls du diesen nicht bereits in deinem VBE hast . – JNevill

+0

Oder Sie können es einfach in einer Zeile Code tun, nachdem Sie die letzte Zeile bestimmen ... 'Sheets (" Name "). Bereich (" A2: Z "& tot_rows) .Delete" – braX

+0

Wo ist dein 'Ende mit' ? – dwirony

Antwort

0

.UsedRange schätzen squirrelly sein kann; insbesondere dann, wenn Ihre Daten von Zeile nicht in einem zusammenhängenden Block erweitert heraus ist 1.

dim lr as long, lc as long 

with worksheets("sheet1") 
    lr = .cells.Find(What:="*", After:=.Cells(1), LookIn:=xlFormulas, LookAt:=xlWhole, _ 
       SearchOrder:=xlByRows, SearchDirection:=xlPrevious).row 
    lc = .cells.Find(What:="*", After:=.Cells(1), LookIn:=xlFormulas, LookAt:=xlWhole, _ 
       SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).column 
    .range(.cells(7, 1), .cells(lr, lc)).clear 
end with 

Wenn Sie alle Zeilen sind ‚Löschen‘, dann müssen Sie sie nur als Block löschen. Keine Schleife; kein Löschen

Für alle Absichten und Zwecke gibt es keinen Grund, dass dies nicht tun wird, was Sie versuchen.

with worksheets("sheet1") 
    .range(.cells(7, 1), .cells(.rows.count, .columns.count)).clear 
end with 
+0

Nun, Sie letzten Code gibt mir die gleiche Antwort: nichts passiert. –

+0

Und ich bin mir sicher, dass Ihr Code perfekt ist, ich weiß wirklich nicht, was ich tun soll –

+0

Ist das Arbeitsblatt/die Arbeitsmappe geschützt? – Jeeped

Verwandte Themen