Excel VBA更改Excel命令按钮上的标题

时间:2016-06-22 20:41:45

标签: excel-vba vba excel

我正在寻找Excel VBA来动态更改Excel命令按钮上的标题。默认标题应为“显示差异”,并应在应用过滤器时更改为“全部显示”。

这是我到目前为止所做的。

Sub ShowDifference()
Dim cmdButton As CommandButton

'打破这里

Set cmdButton = ActiveSheet.Shapes("cmdShowDif")


If cmdButton.Caption = "Show Difference" Then
    ActiveSheet.ListObjects("qryDifference").Range.AutoFilter Field:=4, _
    Criteria1:=Array("<>0.00"), Operator:=xlAnd
    cmdButton.Caption = "Show All"
Else
    ActiveSheet.ListObjects("qryDifference").Range.AutoFilter Field:=4
    cmdButton.Caption = "Show Difference"
End If

End Sub

它打破了sub的名字。为什么呢?

错误: enter image description here

2 个答案:

答案 0 :(得分:1)

以下是工作代码:

Sub ShowDifference()

Dim cmdButton As Button

Set cmdButton = ActiveSheet.Buttons("cmdShowDif")

If cmdButton.Caption = "Show Difference" Then
    cmdButton.Caption = "Show All"
Else
    cmdButton.Caption = "Show Difference"
End If

End Sub

或者,您也可以使用以下代码:

Sub ShowDifference()

Dim cmdButton As Button

For Each cmdButton In ActiveSheet.Buttons
    If cmdButton.Name = "cmdShowDif" Then
        If cmdButton.Caption = "Show Difference" Then
            cmdButton.Caption = "Show All"
        Else
            cmdButton.Caption = "Show Difference"
        End If
    Else
        Debug.Print cmdButton.Name & " is not the one... moving to next button..."
    End If
Next cmdButton

End Sub

如果您有任何问题,请与我们联系。

答案 1 :(得分:0)

转到“开发人员”选项卡,然后单击“设计模式”。现在选择你的CommandButton。按钮的名称将显示在名称框中 - 公式栏的左侧。改变这一行

Set cmdButton = ActiveSheet.Shapes("cmdShowDif")

Set cmdButton = ActiveSheet.OLEObjects("cmdShowDif").Object

但是,它使用正确的名称而不是cmdShowDif(或将名称框中的名称更改为cmdShowDif