分页单独打印Excel表中指定行的数据
我只想打印其中的一行,或者从第m行到第n行的数据,这如何实现呢?
示例数据工作表、打印样式和要打印的表格模板工作表分别如下、和所示。
将“数据”工作表(如所示)中的数据导入“表格模板”工作表(如所示)中并打印出来(如所示)。
数据工作表
打印的样表
表格模板工作表
使用输入框打印指定行数据
如果要打印指定的数据行,可以简单地使用Application对象的InputBox方法,用来让用户输入要打印的行号。代码如下:
Sub printARowData()
‘数据记录工作表变量
Dim wksDatas As Worksheet
‘模板工作表变量
Dim wksTable As Worksheet
‘数据记录工作表中最后一行变量
Dim lngLastRow As Long
‘行变量
Dim lRow As Long
‘提示信息
Dim strPrompt As String
‘忽略错误
On Error Resume Next
‘将工作表赋给相应的变量
Set wksDatas = Worksheets(“数据”)
Set wksTable = Worksheets(“表格模板”)
‘获取数据记录工作表最后一行行号
lngLastRow = wksDatas.Range(“A”& Rows.Count).End(xlUp).Row
‘标题字符串
strPrompt = “请输入2-” & lngLastRow & “之间的数字”
‘获取要打印的行
lRow =Application.InputBox(Prompt:=strPrompt, _
Title:=”打印指定行”, _
Type:=1)
Debug.Print lRow
‘限定输入的数字在数据范围内
If lRow > 1 And lRow < lngLastRow + 1Then
‘将数据工作表中的数据填入模板
With wksDatas
wksTable.Range(“B3”) =.Range(“A” & lRow)
wksTable.Range(“F3”) =.Range(“B” & lRow)
wksTable.Range(“B4”) =.Range(“C” & lRow)
wksTable.Range(“D4”) =.Range(“D” & lRow)
wksTable.Range(“F4”) =.Range(“E” & lRow)
wksTable.Range(“B5”) =.Range(“F” & lRow)
wksTable.Range(“F5”) =.Range(“G” & lRow)
wksTable.Range(“B6”) =.Range(“H” & lRow)
wksTable.Range(“F6”) =.Range(“I” & lRow)
wksTable.Range(“B7”) =.Range(“J” & lRow)
wksTable.Range(“B8”) =.Range(“K” & lRow)
End With
‘打印
wksTable.PrintOut
Else
MsgBox “输入的行不存在!”
End If
End Sub
运行代码,弹出如所示的输入框,可在其中输入要打印数据所在的行号,实现数据打印。
在其中输入要打印数据所在的行号
代码的图片版如下:
代码图片
使用用户窗体指定要打印的行数据范围
首先,设计用户窗体来获取用户输入的数值,如下所示。用户窗体名为urfNum,在两个文本框
txtStartRow和txtEndRow中分别输入开始行和结束行的行号,单击名为cmdOK的确定按钮来打印。
:用户窗体设计
用户窗体模块代码:
Private Sub cmdOK_Click()
‘数据记录工作表变量
Dim wksDatas As Worksheet
‘模板工作表变量
Dim wksTable As Worksheet
‘数据记录工作表中最后一行变量
Dim lngLastRow As Long
‘循环变量
Dim i As Long
‘开始行和结束行变量
Dim lStartRow As Long
Dim lEndRow As Long
‘将工作表赋给相应的变量
Set wksDatas = Worksheets(“数据”)
Set wksTable = Worksheets(“表格模板”)
‘获取数据记录工作表最后一行行号
lngLastRow = wksDatas.Range(“A”& Rows.Count).End(xlUp).Row
‘忽略错误
On Error Resume Next
‘获取数据值
lStartRow = CLng(txtStartRow.Text)
lEndRow = CLng(txtEndRow.Text)
If lStartRow > lEndRow Or lStartRow<2 or=”” lstartrow=””>lngLastRow Or lEndRow > lngLastRow Then
MsgBox “数字不符合要求!”
txtStartRow.Text = “”
txtEndRow.Text = “”
Exit Sub
End If
‘遍历数据记录工作表中数据行
‘将相应数据填入模板工作表
For i = lStartRow To lEndRow
‘将数据工作表中的数据填入模板
With wksDatas
wksTable.Range(“B3”) =.Range(“A” & i)
wksTable.Range(“F3”) =.Range(“B” & i)
wksTable.Range(“B4”) =.Range(“C” & i)
wksTable.Range(“D4”) =.Range(“D” & i)
wksTable.Range(“F4”) =.Range(“E” & i)
wksTable.Range(“B5”) =.Range(“F” & i)
wksTable.Range(“F5”) =.Range(“G” & i)
wksTable.Range(“B6”) =.Range(“H” & i)
wksTable.Range(“F6”) =.Range(“I” & i)
wksTable.Range(“B7”) =.Range(“J” & i)
wksTable.Range(“B8”) =.Range(“K” & i)
End With
‘打印
wksTable.PrintOut
Next i
‘卸载用户窗体
Unload urfNum
End Sub
运行代码后,将出现如下所示的输入界面,可以在文本框中依次输入要打印的起始行行号和结束行行号,来打印处于这两行之间的数据。如果两个行号相同,则只打印该行数据。
:运行后要求输入数字的界面
下面是上述代码的图片版: