|
Ramo さん、おはようございます。
>各シート名のチェックボックスにチェックを入れたシートのみを
>プリントアウトしたいのですが、コマンドボタン(印刷)のVBAを
>どのように記入すればいいのか判りません。
日付入力とかは後で考えてもらうとして、
チェックリストで選択したシートを印刷します。
〔準備〕
ユーザーフォームにコマンドボタン(CommandButton1)とリストボックス(ListBox1)を適当に配置します。
フォームに以下のコードを記述
Private Sub CommandButton1_Click()
Dim II As Integer, Imax As Integer, A As String
'
Imax = Me.ListBox1.ListCount - 1
For II = 0 To Imax
If Me.ListBox1.Selected(II) Then
A = A & vbCrLf & Me.ListBox1.List(II)
End If
Next
If A = "" Then
MsgBox "未選択", vbExclamation, "終了します"
'フォームを閉じる
Me.Hide
Else
If MsgBox("以下のシートを印刷します" & A, vbInformation + vbOKCancel) = vbOK Then
'印刷用にもう一度ループ
For II = 0 To Imax
If Me.ListBox1.Selected(II) Then
Application.ActiveWorkbook. _
Worksheets(Me.ListBox1.List(II)).PrintOut Copies:=1
End If
Next
'フォームを閉じる
Me.Hide
End If
End If
End Sub
'
Private Sub UserForm_Activate()
Dim II As Integer
'アクティブなブックが対象
With Application.ActiveWorkbook
ReDim Ldat(1 To .Worksheets.Count) As String
For Each ws In .Worksheets
II = II + 1
Ldat(II) = ws.Name
Next
End With
With Me.ListBox1
.Clear '念のためクリア
.ListStyle = fmListStyleOption 'オプションボタン又はチェックボックス
.MultiSelect = fmMultiSelectMulti '複数選択可能
'リストにデータ(シート名一覧)
.List = Ldat()
End With
Erase Ldat
End Sub
実行してみてください。
|
|