[[20241227112923]] 『「シートの保護中に置換を可能にする方法」[スイメx(初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『「シートの保護中に置換を可能にする方法」[スイマ] について』(初心者)

投稿
[[20191216162801]] 『シートの保護中に置換を可能にする方法』(スイマ) 
について...  現在の保護マクロが以下です。

Dim W As Worksheet

 For Each W In Worksheets
 ' W.Protect ("●●") 'パスワード●●

 W.Activate
 ActiveSheet.Protect _
 Password:="●●", _
 DrawingObjects:=False, _
 Contents:=True, _
 Scenarios:=Faise, _
 AllowFormattingCells:=True, _
 AllowFormattingColumns:=True, _
 AllowFormattingRows:=True, _
 AllowInsertingColumns:=True, _
 AllowSorting:=True, _
 AllowFiltering:=True 

 Next W
End Sub

具体的なコーディング 教えて頂けませんでしょうか。
丸投げ 大変申し訳ありません。

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


具体的なコーディング?
意味不明
(?) 2024/12/27(金) 11:46:54

実験した感じだと、置き換えは、エラーにはならないけど、
無効化されている感じですね。
一旦、シートの保護を解除したらよさそうです。

<標準モジュール Module1>
Option Explicit

Const mMyPassWord As String = "XXXXX"

Public Sub SheetUnProtect(ByRef ws As Worksheet)

    ws.Unprotect Password:=mMyPassWord
End Sub

Public Sub SheetProtect(ByRef ws As Worksheet)

    ws.Protect Password:=mMyPassWord, _
               DrawingObjects:=False, _
               Contents:=True, _
               Scenarios:=False, _
               AllowFormattingCells:=True, _
               AllowFormattingColumns:=True, _
               AllowFormattingRows:=True, _
               AllowInsertingColumns:=True, _
               AllowSorting:=True, _
               AllowFiltering:=True, _
               UserInterFaceOnly:=True
End Sub

<ユーザーフォームモジュール UserForm1>
Option Explicit

Private Sub CommandButton1_Click()

    Module1.SheetUnProtect ActiveSheet
    ActiveSheet.UsedRange.Replace Me.TextBox1.Text, Me.TextBox2.Text
    Module1.SheetProtect ActiveSheet
End Sub

<ThisWorkBook>
Option Explicit

Private Sub Workbook_Open()

    Const MyPassword As String = "XXXXX"
    Dim ws As Worksheet

    For Each ws In Me.Worksheets
        Module1.SheetUnProtect ws
    Next

    For Each ws In Me.Worksheets
        Module1.SheetProtect ws
    Next
End Sub

ユーザーフォームで置き換えのダイアログボックス的なものを
作って実行ですかね。。。?
どうやってユーザーフォームを表示させるかの問題はありますが。。。^^;
(まっつわん) 2024/12/27(金) 12:59:41


 XL365で実験すると、
 置換対象範囲がすべてロックがはずれたところであっても、
 置換コマンド自体が使用できません。
 シートの保護解除を促す警告が出て置換は実行されません。

 一般ユーザーが置換する人ですか?
 それなら、ロックをはずした置換対象矩形範囲を他のシート(保護されていない)にいったんコピーし、
 そこで置換を施したあと、元のシートにコピーペイストするという方法で
 いわば運用で逃げるしかないのではないですか?

 置換する人はVBAを使う人なら、なんとでもなりそうですね。
 保護解除、置換、再保護をするとか、UserInterfaceOnly:=Trueを使うとか。
(xyz) 2024/12/27(金) 13:11:51

 UserInterfaceOnly:=Trueではダメでした。失礼。明確に保護解除してから、置換、再保護です。
(xyz) 2024/12/27(金) 15:04:36

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.