Vba Selection.shaperage不是';t使用ActiveX命令按钮
我使用ActiveX CommandButton,但在测试Shaperage的选择时遇到问题。我应该更改/修复什么? 提前感谢问题解释 CommandButton没有属性Vba Selection.shaperage不是';t使用ActiveX命令按钮,vba,excel,Vba,Excel,我使用ActiveX CommandButton,但在测试Shaperage的选择时遇到问题。我应该更改/修复什么? 提前感谢问题解释 CommandButton没有属性shaperage 因此,错误总是会出现 另一方面,如果更改按钮的对象(表单集合下的对象),则不会出现该问题,因为该属性存在于该对象中 请注意,即使它们在外观上相似,但它们是完全不同的对象,因此,一个属性可能不存在于另一个属性中,或者在另一个属性中的行为类似。 您可以找到有关使用此按钮可以做什么以及如何做的更多信息 解决方
shaperage
因此,错误总是会出现
另一方面,如果更改按钮的对象(表单集合下的对象),则不会出现该问题,因为该属性存在于该对象中
请注意,即使它们在外观上相似,但它们是完全不同的对象,因此,一个属性可能不存在于另一个属性中,或者在另一个属性中的行为类似。
您可以找到有关使用此按钮可以做什么以及如何做的更多信息
解决方案/解决方案
我可以看到,您正在调用另一个子系统来“个性化”创建的按钮,因为它是未知的,您需要根据对象进行更改,以提供所需的格式。
您还需要颠倒代码中的顺序以进行正确的处理
Sub sampleButton_Click()
On Error GoTo ErrorHandler
With Selection.ShapeRange
If .Type = msoGroup Then
Call setStyleTest(.GroupItems(.GroupItems.Count))
Else
For Each shp In ActiveWindow.Selection.ShapeRange
Call setStyleTest(shp)
Next shp
End If
End With
Exit Sub
ErrorHandler:
MsgBox "Error", vbExclamation
End Sub
进一步思考
我无法想象您需要使用active X而不是form button collection的场景,因此我建议将所有按钮都更改为active X。这对我来说很好
msoGroup
的值为6
在选择组之前,您的代码将一直有效。一旦退出设计模式且未选择组,代码将无法工作
是的,上面两个命令按钮是ActiveX,而不是表单控件
我的建议:坚持使用表单控件。选择是否为有效的形状范围对象?如果不是,else无法处理,则需要使用“on error”语句Yes。当我选择形状对象并调试它时,问题出在With Selection.shaperage中。如果我用shape按钮更改active-X按钮(在macro中指定它并使用下面的代码),程序将平稳运行。使用
Selection.shaperange(1)
,您还可以将其影响为形状类型变量。
...
If .Type = msoGroup Then
With Selection.ShapeRange
...