返回列表 上一主題 發帖

[發問] 關於預覽列印或直接列印

回復 1# av8d


    謝謝前輩發表此主題與範例,後學藉此帖學習自訂表單
自訂表單是另一領域學問,初學的練習範例,請前輩參考
表單控制得不好,請各位前輩指教

預覽列印_20231028.zip (31.95 KB)

點選核取方塊>跳出表單:


選取清單 總表 項做預覽列印:


選取清單 工作表1 項做預覽列印:
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 3# av8d


    主題是要全部印 (最後一個工作表以外的工作表),所以表單中的複選功能不會改變全部印的結果
如果 清單選取的工作表名 才需要印? 需要再斟酌一下
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 Andy2483 於 2023-10-29 08:10 編輯

回復 7# av8d
A是陣列(工作表名),不是清單選取項目,視需求做修改
建議做兩個表單:
1.先複選或全選要印的工作表名 確認(螢幕中間)
A陣列裝這些清單選取的工作表名

2.再跳出要後學2樓預覽列印表單操作(螢幕右下)
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 Andy2483 於 2023-11-3 09:46 編輯

回復 9# 准提部林


    謝謝前輩指導,後學學習結果與心得註解如下,請前輩再指導

按鈕跳出自訂表單:


全部選取:


預覽:



表單模組:
Dim SN$, SR
'↑宣告變數:SN是模組字串變數,SR是通用型變數
Private Sub CheckBox1_Click()
Dim i%
'↑宣告i是短整數變數
For i = 0 To ListBox1.ListCount - 1
'↑設順迴圈!i從0 到清單數量-1
    ListBox1.Selected(i) = CheckBox1.Value
    '↑令清單選取清單i索引號項目
Next i
End Sub

'預覽
Private Sub CommandButton1_Click()
Call 選取工作表群組: If SN = "" Then Exit Sub
'↑令執行副程式 選取工作表群組
'↑如果SN變數是空字元!就結束程序執行

UserForm1.Hide
'↑令表單隱藏
Sheets(SR).PrintPreview
'↑令SR陣列(工作表名) 執行預覽,集中在同一個預覽功能做分頁預覽,
'以滑鼠滾動(或按下一頁)查閱,以ESC鍵(或按關閉預覽)結束預覽

UserForm1.Show 0
End Sub

'列印
Private Sub CommandButton2_Click()
Dim A, PG%
'↑宣告A是通用型變數,PG是短整數變數
Call 選取工作表群組: If SN = "" Then Exit Sub
'↑令執行副程式 選取工作表群組
'↑如果SN變數是空字元!就結束程序執行

PG = Val(TextBox1)
'↑令PG這短整數變數是 輸入窗輸入文字轉化的數值
If PG = 0 Then MsgBox "請輸入列印份數!  ": Exit Sub
'↑如果PG變數是0!就跳出提視窗 "請輸入列印份數!  "
For Each A In SR
'↑設逐項迴圈!令A變數是 SR陣列裡的一陣列值
    Sheets(A & "").PrintOut Copies:=PG
    '↑令工作表(A變數轉化為文字的工作表名)列印 PG變數 份數
Next
Unload Me
End Sub

Sub 選取工作表群組()
Dim i%
'↑宣告i是短整數變數
SN = "": SR = ""
'↑令SN這模組字串變數是 空字元,令SR這模組通用變數是 空字元
For i = 0 To ListBox1.ListCount - 1
'↑設順迴圈!i從0 到清單數量-1
    If ListBox1.Selected(i) = True Then SN = SN & "/" & ListBox1.List(i)
    '↑如果清單的i索引號項被選取!就令SN變數連接 "/" 再連接該被選取項目,
    '成為新字串

Next i
If SN = "" Then MsgBox "尚未選取項目!  ": Exit Sub
'↑如果SN變數是 空字元!就跳出提示窗 "尚未選取項目!  ",結束程序執行
SR = Split(Mid(SN, 2), "/")
'↑令以"/"字元分割(SN變數取第2字開始的右方字串),
'令SR這模組變裝盛一維陣列

End Sub


一般模組:
Sub 列印表單()
Dim xS As Worksheet, S$
'↑宣告xS變數是工作表變數,S變數是字串變數
For Each xS In Sheets
'↑設逐項迴圈!令xS變數是本活頁簿的一工作表
   If xS.Name <> "系統檔" Then S = S & "/" & xS.Name
   '↑如果xS變數(工作表)名不是 "系統檔"字串!
   '就令S變數是 自身連接"/",再連接 xS變數(工作表)名的組合新字串

Next
With UserForm1
'↑以下是關於 自訂表單(名:UserForm1)的程序
   .StartUpPosition = 0
   '↑令表單顯示初始位置是 未指定初始設定
   https://learn.microsoft.com/zh-t ... upposition-property
   .Top = Application.Top + 100
   '↑令表單顯示位置下移
   https://learn.microsoft.com/zh-t ... cel.application.top
   .Left = Application.Left + Application.Width - .Width - 20
   '↑令表單顯示位置再右移
   https://learn.microsoft.com/zh-t ... el.application.left
   https://learn.microsoft.com/zh-t ... l.application.width
   With .ListBox1
   '↑以下是關於清單的程序
        .Clear
        '↑令清除
        .List = Split(Mid(S, 2), "/")
        '↑令以陣列值(以"/"字元分割(S變數取第2字開始的右方字串))帶入清單中
        .MultiSelect = fmMultiSelectMulti
        '↑令清單複選
   End With
   .Show 0
   '↑令顯示清單 (不鎖定)
   .CheckBox1 = False
   '↑令核取方塊是 為非選取狀態
   .TextBox1.SetFocus
   '↑令游標置於輸入窗中
   .TextBox1 = 1
   '↑令輸入窗中顯示 1
End With
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

謝謝論壇,謝謝各位前輩
後學藉此帖練習將範例應用於並排顯示,練習方案如下:
20231103_1.zip (26.09 KB)

按鈕跳出自訂表單:


按並排:
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 Andy2483 於 2023-11-5 05:00 編輯

回復 17# av8d
後學練習的方案是同一個活頁簿 不同工作表的並排顯示,後學也想學這方面的知識
並排顯示的需求與此主題不同
建議前輩另開新話題請教前輩們
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 唯其尊重自己的人,才更勇於縮小自己。
返回列表 上一主題