因此,在一段时间前的Stack Overflow社区的帮助下,我为工作表创建了一个打印宏,该宏可以读取工作表并仅打印其中包含信息的页面数。它会读取行的某些部分,如果未输入数据,将打印正确的页数。这使用户只需输入数据并点击打印按钮即可打印正确的页数(而不是选择File..Print ... etc)
这是使用的代码:
Sub LastRowInOneColumn()
Dim MySheet As Worksheet
Set MySheet = Worksheets("SIF Sheet")
With MySheet
Dim xLastRow As Long
xLastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
Select Case True
Case xLastRow > 21 And xLastRow < 46
'Application.Dialogs(xlDialogPrinterSetup).Show
Worksheets("SIF Sheet").PrintOut From:=1, To:=1, Preview:=True
Case xLastRow > 46 And xLastRow < 97
'Application.Dialogs(xlDialogPrinterSetup).Show
Worksheets("SIF Sheet").PrintOut From:=1, To:=2, Preview:=True
Case xLastRow > 98 And xLastRow < 149
'Application.Dialogs(xlDialogPrinterSetup).Show
Worksheets("SIF Sheet").PrintOut From:=1, To:=3, Preview:=True
Case xLastRow > 150 And xLastRow < 201
'Application.Dialogs(xlDialogPrinterSetup).Show
Worksheets("SIF Sheet").PrintOut From:=1, To:=4, Preview:=True
Case xLastRow > 202 And xLastRow < 253
'Application.Dialogs(xlDialogPrinterSetup).Show
Worksheets("SIF Sheet").PrintOut From:=1, To:=5, Preview:=True
Case xLastRow > 254 And xLastRow < 305
'Application.Dialogs(xlDialogPrinterSetup).Show
Worksheets("SIF Sheet").PrintOut From:=1, To:=6, Preview:=True
Case xLastRow > 306 And xLastRow < 357
'Application.Dialogs(xlDialogPrinterSetup).Show
Worksheets("SIF Sheet").PrintOut From:=1, To:=7, Preview:=True
Case xLastRow > 358 And xLastRow < 409
'Application.Dialogs(xlDialogPrinterSetup).Show
Worksheets("SIF Sheet").PrintOut From:=1, To:=8, Preview:=True
Case xLastRow > 410 And xLastRow < 461
'Application.Dialogs(xlDialogPrinterSetup).Show
Worksheets("SIF Sheet").PrintOut From:=1, To:=9, Preview:=True
Case xLastRow > 462 And xLastRow < 513
'Application.Dialogs(xlDialogPrinterSetup).Show
Worksheets("SIF Sheet").PrintOut From:=1, To:=10, Preview:=True
End Select
End With
End Sub
这很好,因为输入的数据是按节(每节1个帐户)输入的,但是我们最近不得不重新设计它,因此不再按节输入。现在的样子
我需要帮助的是一个脚本,该脚本将无限制地逐行检查数据,然后在没有数据(只有那些有数据的页面)的第一行显示出来。
希望这是有道理的。
我也找到了这段代码,所以现在我对正在使用的代码感到非常困惑。
Sub LastRowInOneColumn()
If Range("C19") = "Enter any special posting instruction here." Then
Range("C19:I26").ClearContents
End If
Dim MySheet As Worksheet
Set MySheet = Worksheets("SIF Sheet")
With MySheet
Dim xLastRow As Long
xLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
Select Case True
Case xLastRow < 500
'Application.Dialogs(xlDialogPrinterSetup).Show
Worksheets("SIF Sheet").PrintOut
End Select
End With
End Sub
我最需要帮助的部分是: 他们遇到的问题是,说他们在1-200行中输入信息,然后在175-200行中删除信息,它仍然通过200而不是通过175打印。
答案 0 :(得分:2)
我需要帮助的是一个脚本,它将逐行检查数据, 无限,然后在没有数据的第一行打印
您可以使用与您发现的宏所使用的方法类似的方法来获取第一行,其中没有数据,如下所示:
With MySheet
Dim xFirstEmptyRow As Long
xFirstEmptyRow = .Cells(1, 1).End(xlDown).Row
End With
在此处链接到.End方法: https://docs.microsoft.com/en-us/office/vba/api/excel.range.end