2

特定のセルでの編集を防ぐ方法でExcelシートを保護しようとしていますが、他のすべての保護オプションは無効になっています。言い換えると、シートは、一部のセルのセル編集が無効になっている場合にのみ、保護されていないシートとして動作する必要があります。

ActiveSheet.Range(Cells(4, 3), Cells(OldRowCount, 7)).Locked = False
ActiveSheet.Protect Contents:=True

おそらく、他のいくつかのプロパティを設定する必要があり.Protectます。または、まったく別の方法を選択する必要があります...

前もって感謝します!

4

1 に答える 1

1

問題は、VBAでこの動作を適切に設定する方法だけだったと思います。

をすばやく使用すると、F1必要なほとんどすべてが提供されます。間違っていたのは の使用でしLockedた。これは、trueインテントのように動作するために、一部のセルに対しては false である必要があり、他のすべてのセルに対しては false である必要があるためです。

これが私の解決策です:

Public Sub Demo()
  With ActiveSheet
    'Deactivate lock for all cells, so they don't be blocked by protection
    .Cells.Locked = False
    'Activate lock for some cells
    'Range(Cells(4, 3), Cells(OldRowCount, 7)).Locked = True
    .Cells(6, 4).Locked = True
    If .ProtectContents Then
      .Unprotect
    Else
      'only contents:=true is really important
      .Protect _
        Password:="", _
        Contents:=True, _
        DrawingObjects:=False, _
        Scenarios:=False, _
        UserInterfaceOnly:=True, _
        AllowDeletingColumns:=True, _
        AllowDeletingRows:=True, _
        AllowFiltering:=True, _
        AllowFormattingCells:=True, _
        AllowFormattingColumns:=True, _
        AllowFormattingRows:=True, _
        AllowInsertingColumns:=True, _
        AllowInsertingHyperlinks:=True, _
        AllowInsertingRows:=True, _
        AllowSorting:=True, _
        AllowUsingPivotTables:=True
    End If
  End With
End Sub
于 2012-11-20T09:57:54.743 に答える