如何用VBA按名称引用并修改动态添加的Toggle Button标题
错误原因分析
你之前的两种方法报错都是因为没找对控件的正确访问路径:
Bttn.caption = bText:Bttn是OLEObject对象,它本身没有Caption属性,必须访问其内部的ToggleButton控件实例才能设置标题。ActiveSheet.Shapes(bName).Text = bText:Shapes里的对应项是控件的容器形状,Text属性不是ToggleButton的标题属性,而且ToggleButton的标题用的是Caption,得先拿到控件实例才能修改。
可行解决方法
方法1:创建控件时直接设置标题
刚创建完控件就设置,不用事后查找,最方便:
Set Bttn = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ToggleButton.1", Link:=False, _ DisplayAsIcon:=False, Left:=R.Left, Top:=R.Top, Width:=R.Width, Height:=R.Height) With Bttn .Name = bName .Object.Caption = bText ' 直接通过Object访问ToggleButton控件设置标题 End With
方法2:按名称引用已生成的控件修改标题
如果是事后要修改,用以下两种方式之一:
- 通过
OLEObjects集合访问:
ActiveSheet.OLEObjects(bName).Object.Caption = bText
- 通过
Shapes集合访问(需先获取OLE格式的控件实例):
ActiveSheet.Shapes(bName).OLEFormat.Object.Caption = bText
内容的提问来源于stack exchange,提问作者Dumitru Daniel
相关产品推荐
相关产品推荐

