Selection.ShapeRange无法使用ActiveX CommandButton

时间:2017-06-08 01:42:08

标签: excel vba excel-vba

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

我使用ActiveX CommandButton并且对ShapeRange的测试选择有问题。我应该更改/修复什么? 提前致谢

2 个答案:

答案 0 :(得分:0)

问题解释

CommandButton没有属性ShapeRange

Shape Properties

因此,错误将始终出现

CommandButton invalid property

另一方面,如果您更改按钮的对象 - 表单集合下的对象 - 您将不会遇到该问题,因为该属性存在于该对象中

Button Object Model

请注意,即使它们在外观上相似,它们也是完全不同的对象,因此,一个属性可能不存在于另一个属性中,或者表现得像另一个属性。 有关您可以做什么的更多信息 - 以及如何操作 - 使用此按钮可以找到here

<强> 解决方案/工作

我可以看到你正在调用另一个子来“个性化”创建的按钮,因为它是未知的,你需要根据对象改变它以提供所需的格式。 您还需要反转代码中的顺序以便正确处理

...
    If .Type = msoGroup Then
With Selection.ShapeRange
...

进一步的想法

我无法想象你需要使用活动X而不是表单按钮集合的场景,所以我建议将所有按钮更改为。

答案 1 :(得分:0)

它对我来说很好用

enter image description here

msoGroup的值为6

直到选择组的时间,您的代码才会起作用。一旦您退出设计模式并且未选择该组,您的代码将无法正常工作。

是的,以上两个命令按钮是ActiveX而不是表单控件

enter image description here

我的建议:坚持表格控件。