求EXCEL VBA代码。单元格输入内容保存后自动锁定有内容单元格。下次打开后不可编辑。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求EXCEL VBA代码。单元格输入内容保存后自动锁定有内容单元格。下次打开后不可编辑。相关的知识,希望对你有一定的参考价值。

在beforesave事件中遍历usedRange,把每个formula不为空的单元格加锁

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim sht As Worksheet, rC As Range
For Each sht In Sheets
    sht.Unprotect
    With sht
        For Each rC In .UsedRange
            If rC.FormulaLocal <> "" Then
                rC.Locked = True
            Else
                rC.Locked = False
            End If
        Next
    End With
    sht.Protect
Next
End Sub


附件可参考

追问

我设置共享后就不行了

追答

是的,共享工作簿,意味着,你在打开这个文件的时候,有可能其他用户也打开了该工作簿。如果这时执行unprotect方法,文件的变化会传送到已经打开该工作簿的人那边,那就会产生未知的安全问题,所以安全逻辑决定了,工作簿被共享时,不能Unprotect。

参考技术A 这个需要代码
思路:
打开事件,将无内容单元格设置为不锁定

关闭事件,退出保存前将有内容单元格设置为锁定

其实,很简单吧追问

If .Value "" Then
PW = InputBox("修改内容请输入密码:")
If PW "0715" Then

这段代码。加个条件限定。保存后才锁定。

求代码

追答

[保存] 也是一个激活事件,需要单独在那个事件中写代码
你不是要[下次打开][才不能编辑]吗?请将具体要求说明一下

追问

关闭工作簿即激活保存及下面代码。
If .Value "" Then
PW = InputBox("修改内容请输入密码:")
If PW "0715" Then

参考技术B 保护工作簿或者工作表即可,不需VBA追问

共享给别人编辑表格。但是我不希望保存后又更改。

追答

可以设置保留修订记录

EXCEL根据单元格名称改变后自杀,求VBA代码!

参考技术A http://wenku.baidu.com/view/94a8757acc7931b764ce1539.html?re=view
看下这个应该会对你有帮助

以上是关于求EXCEL VBA代码。单元格输入内容保存后自动锁定有内容单元格。下次打开后不可编辑。的主要内容,如果未能解决你的问题,请参考以下文章

求VBA高手 ComboBox 自动出现在单元格,选择值后自动赋值给当前单元格的问题

EXCEL的每个单元格实现一次输入后就无法再更改

EXCEL根据单元格名称改变后自杀,求VBA代码!

EXCEL如何实现 回车到达某个单元格自动跳转到指定单元格

EXCEL编程VBA,新手小白紧急求助!求代码,在线等

VBA如何根据某单元格内容锁定某区域