昨天出差,用户有个需求:需要他人录入数据,为了防止已经录入的数据被修改(录入数据由多方完成),必须限定只能输入,不能修改(修改时需要密码),最开始的方案是各设置一个密码,但如果他们相互之间联合起来,密码也就无效了。现在有个解决方案:即通过VBA代码来完成限定。
- Private Sub Worksheet_SelectionChange(ByVal Target As Range)
- On Error Resume Next
- With Target
- If .Value <> "" Then
- PW = InputBox("请输入修改密码:")
- If PW <> "12345" Then
- Cells(1, 1).Select
- Else
- Exit Sub
- End If
- End If
- End With
- End Sub
这段代码可以实现对于已录入的数据不能进行修改,如果非要修改,则需要输入管理员密码。
但问题又来了,如果他们也了解Excel,按Alt+F11,这……
于是要对VBA代码加密,其实Word早就想到了这一点,只不过这样的加密不够强,很容易被破解。参见:破解OfficeVBA密码的方法