[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロにて行の表示・非表示を行いたい』(ともちん)
1・D4:F12、D14:AJ67及びD68:F88のセルの書式設定より保護タブのロックのチェックを外しています。
2・シートの保護にてロックされていないセル範囲の選択以外のチェックを外して、シートの保護を行っています。
3・最後にブックの共有を行っています。
そこで下記のマクロを2つ組みました。
Sub Macro1()
ActiveSheet.Unprotect Range("4:12,68:88").Select Range("A68").Activate Selection.EntireRow.Hidden = True Range("E14").Select ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub
Sub Macro2()
ActiveSheet.Unprotect Rows("4:12").Select Range("4:12,68:88").Select Range("A68").Activate Selection.EntireRow.Hidden = False Range("E4").Select ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub
マクロを実行すると実行時エラー1004となります。
どこを直せばいいですか?
< 使用 Excel:Excel2010、使用 OS:Windows10 >
[シートの保護]を設定する際に[行の書式設定]も許可してあげて、 マクロは↓だけにしてしまえば良いと思います。
Sub Macro1() Range("4:12,68:88").EntireRow.Hidden = True End Sub Sub Macro2() Range("4:12,68:88").EntireRow.Hidden = False End Sub
(白茶) 2023/03/24(金) 13:17:52
■1
発想が↓のようなことになっているのではないでしょうか?
シート保護されていると、行の表示/再表示ができない ↓ 一時的に保護を解除して、操作したら再度保護すればよい
実は、Protectメソッドには【UserInterfaceOnly】という引数があり、これをTrueにするとユーザーの操作は保護されるけどマクロからの操作は許容されるという設定が可能です。
ただし、この設定はブックを開きなおすとただの保護に戻ってしまうので、↓のようにブックを開くたびに【UserInterfaceOnly】をTrueにしなおすようにしておくとよいです。
【ThisWorkbook】モジュールに記述
Private Sub Workbook_Open() With ThisWorkbook.Worksheets(1) .Unprotect .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True End With End Sub
■2
白茶さんからアドバイスがあるところですが、表示/非表示を切り替えるだけなら1つで済みます。
Sub 切り替えタイプ() With ThisWorkbook.Worksheets(1) .Range("4:12,68:88").EntireRow.Hidden = Not .Range("4:12,68:88").EntireRow.Hidden End With End Sub
(もこな2) 2023/03/27(月) 13:02:02
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.