シート表示変更with_PDFフラグ
2022年07月08日
「シート管理シート挿入マクロの解説」について、
select処理を使っている関係で、PDF変換の対象に非表示シートが含まれるとエラーになる。
今回はその対策と、シートの表示制御に関する改良についてのお話。
改良についてはめっちゃ簡単。
シート一覧を取得する際に、今まではシートの状態によらずPDFフラグを1にセットしていた。
対象シートが非表示(if sheets.Visible = false then)ならば、PDFフラグを0にセットするだけ。
ん? フラグが表示状態を表すなら、その値を使って表示制御できるじゃん!
ってことで、フラグに合わせてシートの表示状態を変更するマクロを作ってみた。
select処理を使っている関係で、PDF変換の対象に非表示シートが含まれるとエラーになる。
今回はその対策と、シートの表示制御に関する改良についてのお話。
改良についてはめっちゃ簡単。
シート一覧を取得する際に、今まではシートの状態によらずPDFフラグを1にセットしていた。
対象シートが非表示(if sheets.Visible = false then)ならば、PDFフラグを0にセットするだけ。
ん? フラグが表示状態を表すなら、その値を使って表示制御できるじゃん!
ってことで、フラグに合わせてシートの表示状態を変更するマクロを作ってみた。
表示されてるシートを非表示にするのは右クリックで簡単だけど、
非表示シートを再表示するのはめんどくさい。
いちいちフラグをONにしてからマクロ実行もだるいので、
実行時にONにして良いか聞くことにしよう。マクロボタンも追加して完成!
前回のソースをベースに以下のプロシージャを追加した。
以下、ソース。改良したモジュールは こちら。
'PDFフラグ列が0のシートを非表示へ
Sub †シート表示変更with_PDFフラグ()
Dim rc As Long: rc = MsgBox("PDFフラグONのシートを表示し、OFFのシートを非表示にします。全シートフラグONにしますか?", vbYesNoCancel)
If rc = vbCancel Then End
Sheets("†").Select
Application.ScreenUpdating = False 'バックグラウンドで処理を始める
Dim eGyo As Long: eGyo = Cells(Rows.Count, 1).End(xlUp).Row
Dim strSHname As String, Gyo As Long
For Gyo = 2 To eGyo
strSHname = Cells(Gyo, "B").value
If rc = vbYes Then Cells(Gyo, "F") = 1
If Cells(Gyo, "F") > 0 Then
Worksheets(strSHname).Visible = True
Else
Worksheets(strSHname).Visible = False
End If
Next Gyo
Application.ScreenUpdating = True 'バックグラウンドで処理を終える
End Sub
PR
Comment