【问题标题】:Disable a cell in Excel using VBA使用 VBA 禁用 Excel 中的单元格
【发布时间】:2018-09-17 16:21:08
【问题描述】:

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

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

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

单击计算按钮后,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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

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

    可以,但是:

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

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

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

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

    (根据您的 “灰色” 描述,我相信您正在考虑 Microsoft Access 表单上的文本框。)

    【讨论】:

    • 感谢您的帮助。我会尝试给定的建议,看看我的问题是否得到解决
    【解决方案2】:

    试试这个代码的范围:

    Range("A1:B2").Locked = True

    【讨论】:

    • 我已经尝试过了,但是问题仍然存在。 :(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    相关资源
    最近更新 更多