AW: Spalten+Zeilen löschen + Druckbereich
27.12.2006 13:18:33
Erich
Hi Julia,
da war ich wohl etwas schlampig mit den Punkten - sorry! - aber du hast es ja gleich ausgebügelt :-)
Beim Festlegen des Druckbereichs würde ich nicht vom UsedRange ausgehen. Der ist mitunter viel größer als der gewünschte Bereich.
In dem Makro war noch ein fetter Fehler (meinerseits):
Durch das "Goto XEnd" passiert es, dass etliche Blätter überhaupt nicht bearbeitet werden...
Da steht jetzt "Exit For".
Gleich im Löschen-Makro würde ich es so machen:
Sub NullSpalten_LeerZeilen_Löschen()
Dim ii As Integer, zz As Long, rngF As Range
Dim ssV As Integer, ssB As Integer, ssAnz As Integer
Const HDB = "gesamt"
Dim Calc As XlCalculation
Calc = Application.Calculation
Beschleuniger xlCalculationManual
For ii = Sheets(HDB).Index + 1 To Sheets.Count
With Sheets(ii)
' ------------------------------------------------- Spalten löschen
ssB = 256
Do While ssB > 7
Do While ssB > 7 And .Cells(4, ssB) <> "0"
ssB = ssB - 1
Loop
ssV = ssB + 1
Do While ssV > 7 And .Cells(4, ssV - 1) = "0"
ssV = ssV - 1
Loop
If ssV <= ssB Then
Range(.Columns(ssV), .Columns(ssB)).Delete
ssAnz = ssAnz + ssB - ssV + 1
ssB = ssV - 1
End If
Loop
' ------------------------------------------------- Zeilen löschen
For zz = .Cells(Rows.Count, 1).End(xlUp).Row To 7 Step -1
Set rngF = Range(.Cells(7, 6), .Cells(zz, 256 - ssAnz)).Find(What:="*", _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious)
If rngF Is Nothing Then
Range(.Rows(7), .Rows(zz)).Delete
Exit For
ElseIf rngF.Row < zz Then
Range(.Rows(rngF.Row + 1), .Rows(zz)).Delete
zz = rngF.Row
End If
Next zz
' ------------------------------------------------- Druckbereich festlegen
zz = .Cells(Rows.Count, 1).End(xlUp).Row ' Spalte A ist maßgebend
ssB = .Cells(4, Columns.Count).End(xlToLeft).Column ' Zeile 4 ist maßgebend
Sheets(ii).PageSetup.PrintArea = Range(.Cells(1, 1), .Cells(zz, ssB)).Address
End With
Next ii
Beschleuniger Calc
End Sub
Rückmeldung wäre nett! - Erich aus Kamp-Lintfort wünscht euch einen guten Rutsch!