Excel 2010 - "DATA1"というラベルのワークシートがあり、この例では特定のセルのみを使用するようにブック全体が保護されています。ロックされていない状態で重複を削除する列(「L:N」)があっても、重複は削除されません。ワークブック全体の保護を解除して再保護する方法は、コードが実行しなければならないすべてのアクションを考慮すると実行可能なオプションではありません。 FYI:管理者がファイル全体を保護されていない場合、コードは完全に実行されます。Excel VBAセルがロックされていなくてもブックが保護されている場合は重複を削除します
それは、このエラーメッセージを表示して、次のコードでハング- 「ファイル名を指定して実行時エラー 『1004』:アプリケーション定義またはオブジェクト定義のエラー:シート全体のロックを解除した後
ActiveSheet.Range("L1:N200").RemoveDuplicates Columns:=Array(1, 2, 3), _
Header:=xlYes
、でも、ブック全体を考えました保護されて、それが今のコードの最初の行に停止します。
Sub mcr_FTE_Names()
'Clear contents in the FTE Names columns for a clean slate
Sheets("DATA1").Range("List_FTE_Names").ClearContents
'Copy FTE Names columns from Labor Forecast Detail
Sheets("Labor Forecast Detail").Range("List_FTE_Names_Forecast").Copy
'Paste Special Values of data just copied
Sheets("DATA1").Range("List_FTE_Names").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
'Remove Duplicates
Sheets("DATA1").Range("List_FTE_Names").RemoveDuplicates Columns:=Array(1, 2, 3), _
Header:=xlYes
'Sort Alphabetically
ActiveWorkbook.Worksheets("DATA1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("DATA1").Sort.SortFields.Add Key:=Range("L2:L800") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("DATA1").Sort.SortFields.Add Key:=Range("M2:M800") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("DATA1").Sort.SortFields.Add Key:=Range("N2:N800") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("DATA1").Sort
.SetRange Range("List_FTE_Names")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
MsgBox "Your Resources have been consolidated and alphabetized," & vbNewLine & "you will now proceed back to the Home page."
Sheets("Home").Select
Range("A1").Select
End Sub
:ここ
Sheets("DATA1").Range("List_FTE_Names").ClearContents
は私のコードです210
どのような思考や方向が最も高く評価されます。 ありがとうございます。それは場合に役立ちます
は、ここに私のProtectAll_Admin()のコードです:
Sub ProtectAll_ADMIN()
Dim ws As Worksheet
Dim pWord1 As String
Dim pWord2 As String
For Each ws In Worksheets
If ws.ProtectContents Then
MsgBox ActiveWorkbook.Name & " is already protected.", vbCritical
Exit Sub
End If
Next ws
' To Hide all rows and columns for editing
Call mcr_HideRowsColumns_ADMIN
pWord1 = InputBox("Please Enter the password")
If pWord1 = "" Then Exit Sub
pWord2 = InputBox("Please re-enter the password")
If pWord2 = "" Then Exit Sub
'Make certain passwords are identical
If InStr(1, pWord2, pWord1, 0) = 0 Or InStr(1, pWord1, pWord2, 0) = 0 Then
MsgBox "You entered different passwords. No action taken!"
Exit Sub
End If
For Each ws In Worksheets
ws.Protect Password:=pWord1
'ws.Protect UserInterfaceOnly:=True
ws.Protect AllowFiltering:=True
Next
MsgBox "All Sheets have been Protected" & vbNewLine & "and the File is ready for the PM."
End Sub
workbook.protectがセルをロックするかどうかはわかりません。私は、新しいシートが追加されたり動かされたりするのを防ぐだけだと思った。特定のシートが保護されていないと確信していますか? –
@JohnMuggins - ブックを保護するためのコードは、ワークシート内の各自のためです。 ws.Protect Password:= pWord1 ws.Protect AllowFiltering:= True しかし、私はマネージャーが時間通りに入力するためのロックされていないセルをたくさん持っていますFTEの上記のセルはロックされていないので編集することもできます。それは信じられないほど私を困惑させている。私は、マネージャや管理者にとっては恐ろしい回避策を作りたくありません。 –
VBAコードでは、シート( "DATA1")を使用できます。パスワードの保護:= "pWord1"とシート( "DATA1")。 := "pWord1" – Unknown