表單模組:
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作者: av8d 時間: 2023-10-30 20:57