gpt4 book ai didi

excel - 禁用按钮,直到按下另一个按钮,如果单元格值更改,则再次禁用它

转载 作者:行者123 更新时间:2023-12-04 22:24:51 25 4
gpt4 key购买 nike

我有一个带有 2 个按钮的 excel 工作表。

是否可以在单击第二个按钮之前禁用第一个按钮,然后如果 B2 中的单元格值发生变化,则禁用第一个按钮(因此再次单击第二个按钮将重新启用它)?

上下文

这个 excel 文件连接到一个 SQL 服务器数据库,我给它的用户将使用它来查看和更新​​ SQL 表中的条目。他们将通过在 B2 中输入 ID 来查看详细信息,然后单击第二个按钮,该按钮将填写下表(显示该 ID 的详细信息),如果他们想要进行任何更改,他们将编辑下表并单击第一个按钮。

这样做的问题是,例如,如果他们只是在 B2 中输入一个 ID,转到下面的空表,在其中一列中输入一个值,然后单击第一个按钮,它将将该 ID 的所有其他列设置为空白,仅仅是因为他们没有选择首先查看 ID 并试图跳过一个步骤。

我试过的

在第二个按钮上,我有以下内容:

UpdateDetails.Enabled = True

其中 UpdateDetails 是第一个按钮的名称。

在工作表本身我有
Private Sub Worksheet_Change(ByVal Target As Range)

If Application.WorksheetFunction.CountA(Range("B2")) > 0 Then
UpdateDetails.Enabled = False
End If

End Sub

到目前为止,我可以通过单击第二个按钮启用第一个按钮,但问题是,如果我对 B1 之外的工作表进行任何更改,第一个按钮将再次被禁用;如果 B1 的值发生变化,我只想禁用它。

最佳答案

检查目标参数地址以查看正在更改的单元格..像这样

Private Sub Worksheet_Change(ByVal Target As Range)
If Application.WorksheetFunction.CountA(Range("B2")) > 0 And Target.Address = "$B$2" Then
CommandButton1.Enabled = False
End If
End Sub

它可能运行得更快,编码如下:
Private Sub Worksheet_Change(ByVal Target As Range)
' This way it only runs the CountA check in that one instance
If Target.Address = "$B$2" Then
If Application.WorksheetFunction.CountA(Range("B2")) > 0 Then
CommandButton1.Enabled = False
End If
End If
End Sub

关于excel - 禁用按钮,直到按下另一个按钮,如果单元格值更改,则再次禁用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58897965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com