我的电子表格上有3个表单控制按钮分配给宏。我需要2个禁用/隐藏这些框,直到单元格A1中的值不等于150。我设法制作了以下代码,但它隐藏了所有按钮。
Sub HideButtons()
Dim Value As Integer
Dim Btn As Button
Value = Range("A1").Value
If Value = 150 Then
For Each Btn In ActiveSheet.Buttons
Btn.Visible = False
Next Btn
Else
For Each Btn In ActiveSheet.Buttons
Btn.Visible = True
Next Btn
End If
End Sub
答案 0 :(得分:0)
当然,您的Each
循环会隐藏每个按钮。
但是您可以使用按钮的名称来仅切换特定按钮。例如
Buttons("Button 1").Visible
隐藏名称为Button 1
的按钮。请注意,您可能需要将名称调整为按钮的名称。
Option Explicit
Public Sub ToggleButtonVisibility()
Dim ChangeVisibilityTo As Boolean
If Range("A1").Value = 150 Then
ChangeVisibilityTo = False
Else
ChangeVisibilityTo = True
End If
ActiveSheet.Buttons("Button 1").Visible = ChangeVisibilityTo
ActiveSheet.Buttons("Button 2").Visible = ChangeVisibilityTo
End Sub
要在每次更改A1中的值时运行此过程,可以使用Worksheet_Change
事件。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
ToggleButtonVisibility
End If
End Sub
但是请注意,这仅在手动或VBA更改A1中的值时才有效。如果A1包含公式,则无法使用。