防止用户手动编辑一定范围的单元格(但允许VBA进行编辑)。

14 浏览
0 Comments

防止用户手动编辑一定范围的单元格(但允许VBA进行编辑)。

我想防止用户能够编辑某个单元格范围。但是VBA应该保留此功能。因此,当在Excel中按下按钮时,VBA应该能够修改单元格的值,而用户不能手动进行此操作。\n我在另一个主题中找到了一个符合我的要求的解决方案: 如何保护Excel中的单元格,但允许VBA脚本修改\n唯一我仍然有疑问的是,这是否也适用于特定的范围,而不是整个工作簿?

0
0 Comments

问题的出现原因是用户需要防止手动编辑一定范围的单元格,但仍允许使用VBA进行编辑。为了解决这个问题,可以使用以下方法。

首先,通过VBA对工作表进行保护,代码如下:

Dim sh As Worksheet
Dim myPassword As String
myPassword = "password"
For Each sh In ActiveWorkbook.Worksheets
    sh.Protect Password:=myPassword
Next sh

这样就会对所有工作表进行保护。

接下来,如果需要使用VBA对单元格进行修改,可以使用以下代码对工作表进行解除保护:

Dim sh As Worksheet
Dim myPassword As String
myPassword = "password"
For Each sh In ActiveWorkbook.Worksheets
    sh.Unprotect Password:=myPassword
Next sh

然后,在修改完成后再次对工作表进行保护。

通过以上方法,可以防止用户手动编辑一定范围的单元格,同时允许VBA进行编辑。

0
0 Comments

原因:用户需要防止手动编辑某个范围的单元格,但允许使用VBA进行编辑。

解决方法:可以使用Worksheet对象的Protect方法来实现。设置UserInterfaceOnly参数为True,可以防止用户手动编辑,但允许VBA代码进行编辑。可以通过以下代码应用于特定范围:

Worksheet.Sheets("ControlSheet").Range("M5:N19").Protect "Password", UserInterfaceOnly :=True

以上代码将保护"ControlSheet"工作表中"M5:N19"范围的单元格,防止用户手动编辑,但允许VBA代码进行编辑。

0