问题描述
我正在制作一张Excel表,以跟踪设备的发行。我希望团队中的所有成员都可以编辑工作表,但是一旦他们填写了字段并保存,输入数据的那些字段应被锁定。后来,没有人应该能够编辑其中包含数据的行,但应该能够编辑空行并保存。有人可以指导我吗?
致谢
解决方法
这应该让您入门。
使用Excel structured table保留数据,以添加用户要填充的空行
第1步
将表命名为TableIssuances
(或与下面的代码匹配的名称)
第2步
将此代码添加到ThisWorkbook模块中:
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,Cancel As Boolean)
Module1.LockTableFilledCells
End Sub
Private Sub Workbook_Open()
Module1.LockTableFilledCells
End Sub
第3步
并将其添加到标准模块中(阅读代码的注释并对其进行调整以适合您的需求):
Option Explicit
Option Private Module
Public Sub LockTableFilledCells()
' Define the sheet holding the table
Dim targetSheet As Worksheet
Set targetSheet = ThisWorkbook.Worksheets("Sheet1")
' Unprotect the sheet
Dim sheetPassword As String
sheetPassword = ""
targetSheet.Unprotect Password:=sheetPassword
' Define the table holding the data
Dim targetTable As ListObject
Set targetTable = Range("TableIssuance").ListObject
' Loop through rows and check if No. is filled
Dim tableCell As Range
For Each tableCell In targetTable.ListColumns(1).DataBodyRange.Cells
' Lock the row cells if No. column has a value
targetTable.ListRows(tableCell.Row - targetTable.HeaderRowRange.Row).Range.Locked = (tableCell.Value <> vbNullString)
Next tableCell
targetSheet.Protect Password:=sheetPassword
End Sub
注意:如果您需要向表中添加更多行(由于工作表将被锁定,因为它们不会自动添加),只需解锁工作表并在保存之前添加它们即可。
尝试一下,让我知道它是否有效