Clean Up without reducing print window.

R

Ryan Hess

Currently I have a macro that searches column A row 9+ for a numeric value.
If no value is found in column A of that row, the row is deleted and all
other rows move up. The macro does this function just fine. The problem is,
it shrinks the print window when it deletes all these rows. Is there a way
to edit this macro so that it still deletes all the rows with nothing in
column A, still moves all rows with a value in column A up BUT does not
shrink the print window?

Code I currently use:

Sub CleanUp()

Dim wS1 As Worksheet
Dim DeleteValue As String
Dim rng As Range
Dim calcmode As Long

Set wS1 = Workbooks("Order Form.xls").Sheets("Order Form")

wS1.Unprotect Password:="xxxxx"

With Application
calcmode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With

DeleteValue = ""

With ActiveSheet

.AutoFilterMode = False

.Range("A9:A" & .Rows.Count).AutoFilter Field:=1,
Criteria1:=DeleteValue

With .AutoFilter.Range
On Error Resume Next
Set rng = .Offset(1, 0).Resize(.Rows.Count - 1, 1) _
.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Not rng Is Nothing Then rng.EntireRow.Delete
End With

.AutoFilterMode = False
End With

With Application
.ScreenUpdating = True
.Calculation = calcmode
End With

wS1.Protect Password:="xxxxx"
ActiveSheet.Range("A10").Select

End Sub

Thank you!
 
R

Ryan Hess

EDIT:

I think I'll keep this as it is. I do however have another Macro that I
use to restore the deleted rows. Is there a simple function/code I can enter
into this Macro to restore the Print Area to my desired range? For example,
my Clean Up macro reduces the Print Area to A1:G34. Then I run my Restore
macro and want the Print Area to change to A1:G109.

Thank you!
 
J

JLGWhiz

Don't set the print area until just before the pring command. That way, it
is not subject to change.

ActiveSheet.PageSetup.PrintArea = Range("A1:G109")
ActiveSheet.PrintOut
 
R

Ryan Hess

That works great JLGWhiz!

Thanks again!


JLGWhiz said:
Don't set the print area until just before the pring command. That way, it
is not subject to change.

ActiveSheet.PageSetup.PrintArea = Range("A1:G109")
ActiveSheet.PrintOut
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top