第1个回答 2014-06-24
先确保A1到F1有内容。得用宏。右键点该工作表的名字(在左下方,如Sheet1),查看代码,粘贴如下代码: Private Sub Worksheet_Change(ByVal Target As Range) ActiveSheet.Unprotect "x1y2b9" Cells.Locked = True ActiveSheet.Protect "x1y2b9" End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim xRng As Range Set xRng = Target.Range("A1") If xRng.Column < 8 And xRng.Offset(-1, 0) <> "" And xRng = "" Then ActiveSheet.Unprotect "x1y2b9" xRng.Locked = False ActiveSheet.Protect "x1y2b9" End If End Sub 回到Excel,实现如下功能: 鼠标点任意一单元格,如果在A到F列,且其上面有格有内容,且本身没内容,该单元格取消保护,可以输入数据; 一旦输入数据,所有单元格设定保护,并保护工作表,无法修改。 如果用户在打开Excel时选择禁用宏,该功能就被禁用了。如果你担心这种情况,可以继续如下操作: 确保除了这个有用的工作表(假设这张表叫”数据“,如果不是的话,修改下面的代码)外,还有个叫”首页“的空白工作表,里面可以写上”请启用宏,否则看不到有用的工作表!“这样类似的话。同时按Alt和F11进入宏界面,在左上窗口可以找到本工作簿的名字,双击里面的ThisWorkbook,在右边粘贴如下代码: Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim i As Byte Dim xSJ, xSY As Boolean xSJ = True xSY = True For i = 1 To Sheets.Count If Sheets(i).Name = "数据" Then xSJ = False If Sheets(i).Name = "首页" Then xSJ = False Next If xSJ Or xSY Then MsgBox "必须有" & IIf(xSJ, "数据", "首页") & "这个工作表!" Cancel = True Exit Sub End If Sheets("数据").Visible = 2 End Sub Private Sub Workbook_Open() Sheets("数据").Visible = -1 End Sub 存盘退出。这样下次打开这个工作簿,如果不启用宏,看不得“数据”。启用宏可以看到。存盘时自动隐藏“数据”。这种隐藏,用“取消工作表隐藏”看不到的。