何年にもわたってプロジェクトの回収に使用されるワークブックがあります。ThisWorkbook に結果ワークシートをロックするコードを設定しましたが、ユーザーが列グループを開いたり閉じたりできるようにしました (各年の月の列を非表示または非表示にできるようにするため)。うまく機能する私の現在のコードは、次のようになります。
Sheet10.Protect Password:="password", UserInterfaceOnly:=True
Sheet10.EnableOutlining = True
Sheet11.Protect Password:="password", UserInterfaceOnly:=True
Sheet11.EnableOutlining = True
さらに4枚のシートについても同様です(そして機能します)。
私がやりたいことは、シート識別子を格納する変数を定義し、実際のコードで For Each / Next ループを実行することです。
しかし、コンパイル エラーまたは実行時エラーをスローしない変数宣言を機能させることはできません。
好きな建築は
Dim wSheet as Worksheet
wSheet = Array(Sheet10, Sheet11, Sheet14)
For Each wSheet in Workbook
wSheet.Protect Password:="password", UserInterfaceOnly:=True
wSheet.EnableOutlining = True
Next wSheet
しかし、私の設定wSheetでは失敗します...いくつかのバリエーションを試しましたが、ほとんどの場合、その2行目で失敗します(シートインデックス、シート名などを使用するかどうかは関係ありません)。何かご意見は?