[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数の保護せれたシートの列行の表示、非表示を一括作業』(take)
保護せれたシートの列行の表示、非表示を下記のように作りました。
それを複数(指定)のシート[?@あ ?Aい・・・?Sそ]を一括作業したいのですが
わからないです。
教えて下さい、宜しくお願いします。
Sub 列を非表示にする()
ActiveSheet.Unprotect
Columns("J:L").Select Selection.EntireColumn.Hidden = True
ActiveSheet.Protect End Sub
Sub 列を再表示する() ActiveSheet.Unprotect
Columns("J:L").Select Selection.EntireColumn.Hidden = False
ActiveSheet.Protect End Sub
Sub 行の非表示() Dim c As Range
ActiveSheet.Unprotect
For Each c In Range("A5:A35") If WorksheetFunction.CountA(c.EntireRow.Range("J1:L1")) = 0 Then c.EntireRow.Hidden = True Next
ActiveSheet.Protect End Sub
Sub 行の全表示() ActiveSheet.Unprotect
Range("A5:A35").EntireRow.Hidden = False
ActiveSheet.Protect End Sub
< 使用 Excel:Excel2007、使用 OS:Windows7 >
・複数(指定)のシート[?@あ ?Aい・・・?Sそ]
この意味がちょっとわからないなぁ。
・一括作業
シートの行の表示・非表示を一括作業したいのか、シートのUnprotect、Protect を一括処理したいのか それもわからないなぁ。
ところで、保護されたシートは、通常はさわれないので Unprotect するわけだけど、 人間の操作では保護されていて、さわれないけど、マクロからは、Unprotectしなくても平気でさわれる 方法がありますが、もし、それができれば解決ですか?
VBA UserInterfaceOnly あたりでググると、解説ページがたくさんあります。 これ(マクロからはOKの保護)をWorkbook_Open あたりで必要なシートに対して設定しておくことで 毎回の Unprotect/Protectは必要なくなります。ご参考まで。
それと、ActiveSheet.Protect シート保護をしようとしたとき、操作者に許可する操作がたくさん出てきて、それを選ぶわけだけど、 マクロで Protectメソッドを使う場合、それぞれの機能を許可するかどうか、指定が必要。 指定なければ、各機能に対するDefault設定が採用される。それでよければいいんですが? 何がDefaultなのかは、たとえば
https://msdn.microsoft.com/ja-jp/library/cc390352.aspx
(β) 2015/01/26(月) 16:03
じゃぁ、まず今あるマクロを以下のように変更。
Sub 列を非表示にする(sh As Worksheet)
sh.Unprotect
sh.Columns("J:L").EntireColumn.Hidden = True
sh.Protect
End Sub
Sub 列を再表示する(sh As Worksheet)
sh.Unprotect
sh.Columns("J:L").EntireColumn.Hidden = False
sh.Protect
End Sub
Sub 行の非表示(sh As Worksheet) Dim c As Range
sh.Unprotect
For Each c In sh.Range("A5:A35") If WorksheetFunction.CountA(c.EntireRow.Range("J1:L1")) = 0 Then c.EntireRow.Hidden = True Next
sh.Protect
End Sub
Sub 行の全表示(sh As Worksheet)
sh.Unprotect
sh.Range("A5:A35").EntireRow.Hidden = False
sh.Protect
End Sub
で、列の非表示の一括タイプのみ、サンプルとして(そのほかも同様の要領で) Arrayの中身は必要なだけ追加。
Sub 列非表示一括() Dim shn As Variant
For Each shn In Array("(1)あ", "(2)い", "(20)そ") 列を非表示にする Sheets(shn) Next
End Sub
(β) 2015/01/26(月) 16:48
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.