Excel VBA 获取按钮对象

今天给同事写了两个VBA宏,并分别把宏赋给了两个按钮。
因为两个宏都是实现在两种显示方式之间切换,于是我想除了功能的实现外,还希望在切换到其中一种方式时,按钮上面的文字也可以跟着改变,起到提示作用。

但是网上找了很多文章,都实现不了,而且很多都是针对Form表单控件的。所以自己尝试解决

先说明,我的按钮是 开发者菜单-插入-表单控件 默认下面的第一个。如下图

插入控件之后,可以直接在左上角显示单元格位置的地方修改它的名字,不修改将采用默认值。

在VBA中,先定义一个Button变量,再通过sheet对象和控件名字引用即可:

Sub getControls()
    Dim sht As worksheet
    Set sht = worksheets(sheetname)

    Dim bt As Button
    Set bt = sht.[buttonName]

    bt.Caption = "控件显示的文字"
End Sub

这里容易令人困惑的是,一般我们在定义变量的时候,写完As加空格会有提示列表出现的,但是我在提示列表里面没有发现有Button这种类型。

此外,在引用控件的时候,方括号[]里面直接写控件名,不需要使用双引号

在写bt再加一个点的时候,就会有它的属性或方法的提示列表出现了

原文地址:https://www.cnblogs.com/wuzhiblog/p/6297591.html