Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单击提交按钮后,是否有方法阻止某些excel单元格进行输入?_Excel_Vba - Fatal编程技术网

单击提交按钮后,是否有方法阻止某些excel单元格进行输入?

单击提交按钮后,是否有方法阻止某些excel单元格进行输入?,excel,vba,Excel,Vba,我有一个宏excel,在我填写了一些信息后,我点击提交按钮,文件通过电子邮件发送。我需要的是,在提交功能启动和电子邮件发送之间的过程中,文件会被阻止进行以前的编辑。 任何帮助都会很好,谢谢 我已经尝试了以下代码,但它不起作用 Set MyRange = Intersect(Range("J6:J7"), Target) If Not MyRange Is Nothing Then Sheets("Sheet").Unprotect Password:="123"

我有一个宏excel,在我填写了一些信息后,我点击提交按钮,文件通过电子邮件发送。我需要的是,在提交功能启动和电子邮件发送之间的过程中,文件会被阻止进行以前的编辑。 任何帮助都会很好,谢谢

我已经尝试了以下代码,但它不起作用

Set MyRange = Intersect(Range("J6:J7"), Target)
    If Not MyRange Is Nothing Then
        Sheets("Sheet").Unprotect Password:="123"
        MyRange.Locked = True
        Sheets("Sheet").Protect Password:="123"
    End If

假设您正在使用
工作表\u Change(ByVal Target As Range)
,我将
MyRange.Locked=True
更改为
Cells.Locked=True
,以便保护整个工作表

预期结果是,无论何时J6或J7中的更改都会触发对整个工作表的保护

Set MyRange = Intersect(Range("J6:J7"), Target)
    If Not MyRange Is Nothing Then
        Sheets("Sheet").Unprotect Password:="123"
        Cells.Locked = True
        Sheets("Sheet").Protect Password:="123"
    End If
如果您没有使用“工作表更改事件”,则我更改了您的条件以测试单元格是否有值

        If Len(Range("J6").Text) <> 0 Or Len(Range("J7").Text) <> 0 Then
            Sheets("Sheet").Unprotect Password:="123"
            Cells.Locked = True
            Sheets("Sheet").Protect Password:="123"
        End If
如果Len(Range(“J6”).Text)0或Len(Range(“J7”).Text)0,则
工作表(“工作表”)。取消保护密码:=“123”
Cells.Locked=True
工作表(“工作表”)。保护密码:=“123”
如果结束

假设您正在使用
工作表\u Change(ByVal Target As Range)
,我将
MyRange.Locked=True
更改为
Cells.Locked=True
,以便保护整个工作表

预期结果是,无论何时J6或J7中的更改都会触发对整个工作表的保护

Set MyRange = Intersect(Range("J6:J7"), Target)
    If Not MyRange Is Nothing Then
        Sheets("Sheet").Unprotect Password:="123"
        Cells.Locked = True
        Sheets("Sheet").Protect Password:="123"
    End If
如果您没有使用“工作表更改事件”,则我更改了您的条件以测试单元格是否有值

        If Len(Range("J6").Text) <> 0 Or Len(Range("J7").Text) <> 0 Then
            Sheets("Sheet").Unprotect Password:="123"
            Cells.Locked = True
            Sheets("Sheet").Protect Password:="123"
        End If
如果Len(Range(“J6”).Text)0或Len(Range(“J7”).Text)0,则
工作表(“工作表”)。取消保护密码:=“123”
Cells.Locked=True
工作表(“工作表”)。保护密码:=“123”
如果结束

到底“它不工作”代表什么?你期待什么,与正在发生的事情相比?相交范围是否未锁定?此处缺少大量信息…回答得很好,谢谢!它不工作的意思是:如果我把那块代码放进去,它什么也做不了。。。我要说明的是,在我提交文件后,所有单元格都被阻止,因此无论谁收到电子邮件,都不会编辑任何信息。因此,您所关注的是接收文件的人无法编辑特定单元格。正在发送文件中的代码吗?如果是,则通过访问VBA编辑器使取消保护密码保持公开(除非您对模块进行密码保护)。您是否确认需要保护的上的“锁定”属性单元格已设置为True?此外,是否有原因导致此文件无法以PDF格式发送?如果你正在寻找一个不可编辑的文件,那么Adobe通常是你最好的选择。因此,您打开了一个excel文件供人员a进行编辑,单击“提交”后,您希望将该excel文件发送给人员B进行审阅,而不需要进行编辑。B必须决定接受还是拒绝。所以我猜如果接受,excel文件将再次发送,如果拒绝,则不会发生任何事情?确切地说,“它不工作”代表什么?你期待什么,与正在发生的事情相比?相交范围是否未锁定?此处缺少大量信息…回答得很好,谢谢!它不工作的意思是:如果我把那块代码放进去,它什么也做不了。。。我要说明的是,在我提交文件后,所有单元格都被阻止,因此无论谁收到电子邮件,都不会编辑任何信息。因此,您所关注的是接收文件的人无法编辑特定单元格。正在发送文件中的代码吗?如果是,则通过访问VBA编辑器使取消保护密码保持公开(除非您对模块进行密码保护)。您是否确认需要保护的上的“锁定”属性单元格已设置为True?此外,是否有原因导致此文件无法以PDF格式发送?如果你正在寻找一个不可编辑的文件,那么Adobe通常是你最好的选择。因此,您打开了一个excel文件供人员a进行编辑,单击“提交”后,您希望将该excel文件发送给人员B进行审阅,而不需要进行编辑。B必须决定接受还是拒绝。所以我猜如果接受,excel文件将再次发送,如果拒绝,则不会发生任何事情?谢谢。我会试试看,如果可以的话会告诉你为什么不在发送前采取一种简单的方法保护工作表,而不是在用户试图编辑单元格时这样做?看起来你把它弄得比你需要的复杂得多。我就是这样做的,当用户发送它时,它会得到我需要的锁。谢谢。我会试试看,如果可以的话会告诉你为什么不在发送前采取一种简单的方法保护工作表,而不是在用户试图编辑单元格时这样做?看起来你让它变得比你需要的复杂得多。我就是这样做的,当用户发送它时,它会得到我需要的锁。