【发布时间】:2015-04-10 21:51:02
【问题描述】:
我想要做的是,如果 A* 列中有“1”,那么我希望宏将行从 B*:L* 列复制到新工作表,然后打印工作表已经经历了完整的范围。
如果 A 列中没有“1”,那么我只希望它继续到下一行进行检查。需要帮助吗?
Sub PrintFlaggedRows()
Const STARTSEARCHROW As Long = 1
Const STARTPRINTROW As Long = 2
Const ENDSEARCHROW As Long = 250
Const STARTCOLUMN As Integer = 1 ' Column A
Const ENDCOLUMN As Integer = 1 ' Column A
Dim oldAlerts As Boolean
Dim oldUpdates As Boolean
Dim destSheet As Worksheet
Dim srcSheet As Worksheet
Dim destRange As Range
Dim i As Long
oldUpdates = Application.ScreenUpdating
Application.ScreenUpdating = False
oldAlerts = Application.DisplayAlerts
Application.DisplayAlerts = False
Set srcSheet = Sheets("Estimating & Building Quote")
Set destSheet = Worksheets.Add
Set destRange = destSheet.Cells(STARTPRINTROW, 1)
For i = STARTSEARCHROW To ENDSEARCHROW
If (srcSheet.Cells(i, 1) = 1) _
Or (srcSheet.Cells(i, 1) = "1") Then
srcSheet.Range(Cells(i, STARTCOLUMN), Cells(i, ENDCOLUMN)).Copy
dstRange.PasteSpecial xlPasteValues
dstRange.PasteSpecial xlPasteFormats
Set dstRange = dstRange.Offset(0, 1)
End If
Next i
destSheet.Columns.AutoFit
destSheet.PrintOut
destSheet.Delete
Application.DisplayAlerts = oldAlerts
Application.ScreenUpdating = oldUpdates
结束子
【问题讨论】: