保護する必要があるワークシートでマクロを使用しています。これはマクロです:
wksPartsDataEntry.Unprotect
Sheet11.Unprotect
Application.ScreenUpdating = False
Dim historyWks As Worksheet
Dim inputWks As Worksheet
Dim nextRow As Long
Dim oCol As Long
Dim myCopy As Range
Dim myTest As Range
Dim lRsp As Long
Set inputWks = wksPartsDataEntry
Set historyWks = Sheet11
'check for duplicate order ID in database
If inputWks.Range("CheckID2") = True Then
lRsp = MsgBox("Clinic ID already in database. Update record?", vbQuestion + vbYesNo, "Duplicate ID")
If lRsp = vbYes Then
UpdateLogRecord
Else
MsgBox "Please change Clinic ID to a unique number."
End If
Else
'cells to copy from Input sheet - some contain formulas
Set myCopy = inputWks.Range("OrderEntry2")
With historyWks
nextRow = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).Row
End With
With inputWks
Set myTest = myCopy.Offset(0, 2)
If Application.Count(myTest) > 0 Then
MsgBox "Please fill in all the cells!"
Exit Sub
End If
End With
With historyWks
With .Cells(nextRow, "A")
.Value = Now
.NumberFormat = "mm/dd/yyyy hh:mm:ss"
End With
.Cells(nextRow, "B").Value = Application.UserName
oCol = 3
myCopy.Copy
.Cells(nextRow, 3).PasteSpecial Paste:=xlPasteValues, Transpose:=True
Application.CutCopyMode = False
End With
'clear input cells that contain constants
With inputWks
On Error Resume Next
With myCopy.Cells.SpecialCells(xlCellTypeConstants)
.ClearContents
Application.GoTo .Cells(1) ', Scroll:=True
End With
On Error GoTo 0
End With
End If
Application.ScreenUpdating = True
wksPartsDataEntry.Protect
Sheet11.Protect
End Sub
マクロは正常に動作します。ただし、パスワードを使用してシートを保護したい他のユーザーにファイルを配布します。すべてのユーザーは、異なるパスワードを使用する必要があります。そのパスワードは一意であるため、コードにパスワードを追加することはオプションではありません。保護するときに他のユーザーが独自のパスワードを追加できるようにしたいです。次のようなことができるコードは存在しますか?
Sub Macro1()
wksPartsDataEntry.Unprotect Password: (anything a user might choose as a password)
Sheet11.Unprotect: (anything a user might choose as a password)
したがって、最終的には、ユーザーがコードを変更することなく、ユーザーが自分で選択したパスワードに基づいて、私のマクロは保護を解除して再保護します。
私が十分に明確であることを願っています。答えてくれてありがとう!