[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロにて行の表示・非表示を行いたい』(ともちん)
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.