当 4 个单元格不为空时启用命令按钮

Enabling the Command Button when 4 Cells are not Empty

我有 4 个单元格 (S11:T12) 和一个命令按钮 1,我想要的是,在所有 4 个单元格都被填充之前,应该禁用命令按钮(我可以从属性选项卡中执行此操作)并且一次全部4 个单元格填满数字,命令按钮应启用,一旦这些单元格中的数据被删除,命令按钮应再次禁用。

代码应该写在哪个事件下?

我试过了,但是不行。

Private Sub Workbook_Open(Cancel As Boolean)

    If Sheets("WorkArea").Range("S11:T12") = "" Then
        Sheets("WorkArea").CommandButton1.Enabled = False
            Else
        Sheets("WorkArea").CommandButton1.Enabled = True
    End If
      
End Sub

使用 WorkSheet_Change 事件处理程序来处理单元格的变化,您可以使用 CountBlank 工作表函数来确定区域是否为空。

Private Sub Worksheet_Change(ByVal Target As Range)
    If WorksheetFunction.CountBlank(Range("S11:T12")) = 4 Then
        Sheets("WorkArea").CommandButton1.Enabled = False
    Else
        Sheets("WorkArea").CommandButton1.Enabled = True
    End If
End Sub

然而根据你的问题,你实际上想要:

Private Sub Worksheet_Change(ByVal Target As Range)
    If WorksheetFunction.CountBlank(Range("S11:T12")) = 0 Then
        Sheets("WorkArea").CommandButton1.Enabled = True
    Else
        Sheets("WorkArea").CommandButton1.Enabled = False
    End If
End Sub

工作表更改

  • 如果临界范围包含公式,则此解决方案将不起作用。
  • 要计算非空单元格的数量,您可以使用 WorksheetFunction.CountA 方法。
  • 通常您不希望此代码在范围外发生变化时运行,因此您将使用Application.Intersect 方法将代码限制在范围内。您不必在每次更改时启用或禁用命令按钮,因为显然代码会在每次更改时 运行。
  • 由于这一切都发生在工作表 "WorkArea" 中,因此无需通过其名称来引用它,即您可以安全地使用 Range(rngAddress)CommandButton1 而不是 [=14] =] 和 ThisWorkbook.Worksheets("WorkArea").CommandButton1 分别。

代码

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Const rngAddress As String = "S11:T12"
    Dim rng As Range
    Set rng = Range(rngAddress)
    If Not Intersect(Target, rng) Is Nothing Then
        If WorksheetFunction.CountA(rng) = rng.Cells.Count Then
            CommandButton1.Enabled = True
        Else
            CommandButton1.Enabled = False
        End If
    End If
End Sub