使用VBA在Excel中禁用单元格

时间:2018-09-17 16:21:09

标签: excel vba excel-vba

单击Calculate按钮(Active X按钮)后,我试图进行少量计算并更新单元格中的结果。

当打开Excel工作表时,我希望很少有单元格被禁用并变灰。为了实现相同的目的,我在Workbook_Open()子代码下面编写了以下代码行。在该子下编写的所有条件都可以正常工作,除了我编写的禁用该单元格的语句(编写了锁定功能以禁用该单元格)。

经过一番冲浪,我了解到如果需要禁用/锁定单元格,则需要保护床单。因此,我在代码中增加了一行以保护工作表。但是,这停止了结果在单元格中的更新。

在单击“计算”按钮时,excel会指出“表格受到保护”。因此,是否有使用VB脚本启用/禁用单元格而又不保护工作表的信息?

Private Sub Workbook_Open()

    Dim b1 As Variant
    Set b1 = Sheets("Calculation Tool").CommandButton22
    b1.Enabled = False

    Range("B4:C4") = ""
    Range("E4:O4") = ""
    Range("E9:F9") = ""

    'This is the code written to disable the cells N4 and O4
    Sheets("Calculation Tool").Range("N4:O4").Locked = True
    Sheets("Calculation Tool").Protect

End Sub

2 个答案:

答案 0 :(得分:3)

您本身不能“禁用” 工作表单元格;它不像文本框控件。

可以 ,但是

  1. 将单元格的填充颜色设置为灰色( Ctrl + 1 进入na.locf()> Format Cells标签)
  2. 锁定单元格以防止更改( Ctrl + 1 进入Fill> Format Cells标签)
  3. 保护工作表(Protection标签> Review),以使单元格锁定生效。

如果需要更改锁定的单元格,可以以编程方式取消保护工作表,进行更改,然后重新保护它。另外请注意,保护工作表时有几个选项可用。

或者,您可以改用文本框,然后像其他控件一样disable/lock

另请参阅:Lock or unlock specific areas of a protected worksheet

(基于您的“灰白” 描述,我认为您正在考虑Microsoft Access Forms上的文本框。)

答案 1 :(得分:0)

在范围内尝试以下代码:

Range(“ A1:B2”)。Locked = True