分頁單獨打印Excel表中指定行的數據
分頁單獨打印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
運行代碼后,將出現如下所示的輸入界面,可以在文本框中依次輸入要打印的起始行行號和結束行行號,來打印處于這兩行之間的數據。如果兩個行號相同,則只打印該行數據。
:運行后要求輸入數字的界面
下面是上述代碼的圖片版:
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。