• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBAで条件付き保護について)

EXCEL VBA条件付き保護の設定方法

doredoraの回答

  • doredora
  • ベストアンサー率57% (4/7)
回答No.4

こんばんは。 ご質問の回答に的を得ていないかもしれませんが、マクロ処理の際に処理の前に保護解除して処理後に保護をする記述が煩わしくなりThisWorkbookに Private Sub Workbook_Open()   Sheets("シート名").Protect Password:="AAA", userinterfaceonly:=True End Sub を記述するようにしています。 これは、マクロがそのシートを"AAA"というパスワードを保有しマクロ実行時にそのパスワードを使用し解除、保護をその都度やってくれます(表現的に正しいかわかりませんが私はそんな感じで使っています) これを記述するようになってからは記述する際に気にする要素がひとつ減り楽になっています。 今回の問題がシート保護をかけるタイミング云々が関係しているようなら試してみられてはいかがでしょう お門違いの内容ならスルーしてください^^;

関連するQ&A

  • エクセル VBA

    先日初めてVBAに触れた者です 知恵をお貸しください エクセルのバージョンは2000です ブックのデータを誰も編集できないようにして、 尚且つオートフィルタだけを有効にする方法を探しています。 この条件だけならば、 Sub Auto_Open() Worksheets("Sheet1").EnableAutoFilter = True Worksheets("Sheet1").Protect UserInterfaceOnly:=True End Sub で、可能になったのですが あとこのシートに「パスワード保護」をかけることは 出来るでしょうか? 私には「出来る」か「出来ないか」すらわからないです。 お手数をおかけして申し訳ないですが どうぞお助けくださいませ。 よろしくお願いします

  • エクセル保護でのグループ化、フィルタの使用方法

    エクセル2007でセルの保護の状態でグループ化の表示切替とオートフィルタを使用する方法を教えてください。 現在ファイル内で特定の列に保護をかけています。 保護により無効となってしまったグループかの表示・非表示はVBAで 切替られるようにしました。 Private Sub Workbook_Open() With Worksheets("シート名") .EnableOutlining = True .Protect UserInterfaceOnly:=True End With End Sub 更に、オートフィルタを使用したいのですが、 保護を行う時に「オートフィルタの使用」にチェックを入れているのに 選択が不可能な状態です。 すべての条件を満たすにはどのような方法があるのでしょうか。 お分かりになる方がいられましたらご教授ください。

  • エクセルVBA/原因不明の保護解除?!

    下記のコードを実行すると、終了後次回立ち上げたとき、シートの保護が解除されています。 コードではオブジェクトを含めてシートを保護し、終了時には「保存」をしているのですが、なぜか次の立ち上げでは保護が解除されています。 原因がわかりません。お助けください。 Sub Test01() Dim s, i, cr With ActiveSheet .Protect Password:="aaa", DrawingObjects:=False, Contents:=True, Scenarios:= _ True, UserInterfaceonly:=True 'オブジェクトのみ保護解除 Cells.Interior.ColorIndex = 1 'シートを黒色に Set s = .Shapes.AddShape(msoShape4pointStar, 100#, 125#, 200#, 200#) '星を配置 s.Fill.Visible = msoTrue s.Fill.Solid Randomize cr = Int((30 * Rnd) + 1) s.Fill.ForeColor.SchemeColor = cr '色をランダムに For i = 1 To 300 '点滅 s.Visible = False DoEvents s.Visible = True DoEvents Next s.Delete '星を削除 .Protect Password:="aaa", DrawingObjects:=True, Contents:=True, Scenarios:= _ True, UserInterfaceonly:=True 'オブジェクトも保護 Cells.Interior.ColorIndex = 0 'シートをもとにもどす End With ActiveWorkbook.Close '終了する End Sub

  • シートの保護のあとセルの列、幅を動かせるようにしたい

    EXCELマクロでシートの保護はするがセルの行、列の幅を動かせるにしたいです。 シート1,2,3があり、シート2,3のデータをシート1に集約する処理を 行っています。 シート1,2,3は事前にシートの保護を設定し、シートの保護の設定で、ロックされたセル範囲の選択、セル書式設定、列の書式設定、行の書式設定は許可しています。 シート1にシート2,3のデータを設定する時にActiveSheet.Unprotect Password:="password"でシートの保護を解除し、設定後にActiveSheet.Protect Password:="password"を再度保護しています。 空の状態のシート1はセルの行、幅を動かすことはできるのですが、上記のシートの保護を解除し、データ設定後、ActiveSheet.Protect Passwordコマンドで保護するとシート1のセルの行、幅を動かすことができなくなります。 シートの保護設定のやり方があるのでしょうか。 ご指導のほど、よろしくお願いいたします。

  • シートの保護につきまして

    行・列の追加削除だけ、無効にする方法は ありますか? 単にシートを保護するだけなら下記で行っております。 ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True ご回答のほど、よろしくお願いいたします。

  • エクセル97 フォームシートの保護をする時に出る"パスワード"をコード化させたい

    「表示-ツール-フォーム」でボタンを作りました。 そして、マクロの自動登録で「シートの保護」を選び「パスワード:password」を設定し、更に「password」で保護解除をし、マクロ記録終了。 そして、各コードを「シートの保護」:ボタン3、「シートの解除」:ボタン2、に設定しました。 それらを実行させてみたのですが、特に「パスワード:password」を聞かれることなく一連の作業が終了してしまいました。 コードは以下のとおりです。 Sub ボタン2_Click() ' ' ボタン2_Click Macro ' マクロ記録日 : 2004/2/9 ユーザー名 : **** ' ActiveSheet.Unprotect End Sub -------------------------- Sub ボタン3_Click() ' ' ボタン3_Click Macro ' マクロ記録日 : 2004/2/9 ユーザー名 : **** ' ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub そこで、各ボタンのクリック時に、パスワードを聞いてきてくれるコードを書き加えたいのです。 わかる方がいらっしゃいましたら、是非教えてください!! コードに関して素人ですので、できたら、全体を通してコードを教えて頂ければ助かります。 いろいろ探してみたのですが、ギブアップです。 宜しくお願い致します。

  • VBAで、シート保護のパスワードは利用可能ですか?

    VBAソース上で、シート保護で設定したパスワードを取得、使用することは可能でしょうか? ソースにパスワード文字列をベタ書きせずにすむなら、その方法をとりたいので教えてください。 例) 1.[Excelメニュー-シート保護]で、パスワードを設定 2.VBAで、以下のように「1.で設定したパスワード」を取得し、変数に代入 3.Protectメソッドでその変数を使用  VBAソース)  Dim pass As String  pass = 「1.で設定したパスワード」  ActiveSheet.Protect Password:=pass, UserInterfaceOnly:=True

  • ExcelでVBAにおけるシートの保護に関して・・・

    ユーザーフォームで入力した値がシートのセルに入力 されるというものを作っています。 そこで、シートの列挿入及び列削除を禁止しておきたい のですが、そのままシートを保護してしまうとユーザー フォームが開かなくなるので、VBAにてユーザーフォーム が開く前に保護を解除し、閉じるときに再び保護をかける ようにしました。 ただ、この方法だと、シート保護の項目全て(初期設定) に対して保護されてしまうため、例えば行挿入や行削除、 あるいはオートフィルタや並べ替えといったことまでが 出来なくなってしまいます。(手動で保護を解除すれば できるのですが、一々解除しなければならないのは面倒 なので何とか避けたいのです。) 禁止したいのは、列削除及び列挿入のみなのですが、 他によい方法はないでしょうか。

  • エクセルVBAでブック保護のUserInterfaceOnly:=Trueはダメ?

    エクセル2000です。シート保護ならUserInterfaceOnly:=TrueでVBAでの変更は可能ですが、Book保護にもそういう機能はないのでしょうか?試しに、 Sub TEST1() ActiveWorkbook.Protect Password:="merlion" , UserInterfaceOnly:=True End Sub とやってみましたが、エラーになってしまいました。(泣)

  • Excel2003でシート保護(オートフィルタ使用にはチェック)するとオートフィルタが使えない

    Excel2003を使用しています。 シートの保護でオートフィルタの使用にチェックを入れて保護をかけた後、データ - フィルタ - オートフィルタ が灰色に表示され、使用出来ません。 フィルタ設定 → シート保護だとオートフィルタを使用できます。 Excelの試用でオートフィルタの使用にチェックを入れて保護をかけても、保護後にはオートフィルタの設定は出来ないのでしょうか?