如何禁用/隐藏3个表单控制按钮中的2个?

时间:2018-07-24 14:54:29

标签: excel vba excel-vba

我的电子表格上有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

1 个答案:

答案 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包含公式,则无法使用。