Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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:对话框(xlDialogProtectDocument)的用法。显示_Vba_Excel - Fatal编程技术网

Excel VBA:对话框(xlDialogProtectDocument)的用法。显示

Excel VBA:对话框(xlDialogProtectDocument)的用法。显示,vba,excel,Vba,Excel,我想预设Excel的“保护工作表”对话框。我希望它预设如下屏幕截图所示: 使用某些预设打开此对话框的一种方法是: Application.Dialogs(xlDialogProtectDocument).Show arg1:=True 这将设置/取消设置对话框中的第一个复选框 根据本标准,允许的参数为: contents, windows, password, objects, scenarios 一些尝试和错误并没有揭示是否以及如何预设底部列表中的复选框 可能吗?如果是,如何操作?正如l

我想预设Excel的“保护工作表”对话框。我希望它预设如下屏幕截图所示:

使用某些预设打开此对话框的一种方法是:

Application.Dialogs(xlDialogProtectDocument).Show arg1:=True
这将设置/取消设置对话框中的第一个复选框

根据本标准,允许的参数为:

contents, windows, password, objects, scenarios
一些尝试和错误并没有揭示是否以及如何预设底部列表中的复选框


可能吗?如果是,如何操作?

正如lturner在评论中注意到的,对话框会记住以前使用的设置。这包括通过VBA设置板材保护时使用的设置。因此,在使用打开对话框之前,通过VBA设置+取消设置保护

Application.ThisWorkbook.Sheets(1).Protect AllowFormattingCells:=True
Application.ThisWorkbook.Sheets(1).Unprotect
Application.Dialogs(xlDialogProtectDocument).Show
是否根据需要生成复选框

上提供了
.Protect
方法的所有可能选项的列表


这是一个丑陋的解决方案,因为它有副作用(板材在过程中很快受到保护),并且是基于副作用。因此,我暂时不会接受这个答案。欢迎并接受更好的答案。

如果您想预设静态选项,那么为什么不保护工作表,勾选要启用的选项,然后再次取消保护。下次有人去保护工作表时,之前选择的选项将被保留。你是对的。Excel确实记得以前的设置。我没有注意到的原因是,在我的项目中,有大量VBA宏用于设置和取消该工作表上的保护(通过
.unprotect
/
.protect
),这会弄乱预设(以及工作表本身的保护!)。这一见解实际上可能使这个问题与我的具体情况无关。谢谢你的关注!