Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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 VBA-如何防止用户在某些条件下更改工作表_Vba_Excel_Worksheet - Fatal编程技术网

Excel VBA-如何防止用户在某些条件下更改工作表

Excel VBA-如何防止用户在某些条件下更改工作表,vba,excel,worksheet,Vba,Excel,Worksheet,我目前正在创建一个工作簿,它有一个输入选项卡,所有的数据都会流入后面的选项卡。我想防止用户移动到任何其他选项卡上,直到所有相关信息都填写在输入表上 我目前正在尝试使用工作簿\u sheetactivate事件,但在该事件和工作表\u更改事件之间花费了大量时间,这两个事件我都无法正常工作。非常感谢您的帮助。如果您不想使用表单,我建议在每张表单中添加类似于以下内容的代码: Private Sub Worksheet_Activate() If Worksheets("Sheet1").Ran

我目前正在创建一个工作簿,它有一个输入选项卡,所有的数据都会流入后面的选项卡。我想防止用户移动到任何其他选项卡上,直到所有相关信息都填写在输入表上


我目前正在尝试使用工作簿\u sheetactivate事件,但在该事件和工作表\u更改事件之间花费了大量时间,这两个事件我都无法正常工作。非常感谢您的帮助。

如果您不想使用表单,我建议在每张表单中添加类似于以下内容的代码:

Private Sub Worksheet_Activate()
    If Worksheets("Sheet1").Range("A1").Value = "" Then
        Worksheets("Sheet1").Select
    End If
End Sub

显然,您需要更改工作表名称、范围和值,但我相信您会明白这一点

改用表格。否则,隐藏除必须完成的工作表之外的所有工作表。使用按钮(或2)在图纸之间移动。这样,您可以将所有“是否允许移动到下一张工作表”逻辑包装在一个按钮(或其他子按钮)中。使用自定义表单将是最好的方法,因为您可以设置表单的模式,以便用户在关闭表单之前无法在excel中选择任何内容。然后,您可以设置条件,以便只有在完成所有字段后才能关闭表单。或者,您可以将代码放在其他工作表中,以便他们检查另一个工作表(输入选项卡)上的条件,如果条件不满足,则再次激活输入选项卡。这非常有效,显然我想做的事情比我在这里解释的要复杂一些,但这为我提供了我缺少的一个步骤。谢谢!