获取复制的按钮的Text属性时,运行时错误1004 /错误438,但设置该属性仍然有效

我已经通过复制粘贴(从另一本工作簿中)在excel工作表中插入了大量的表单控件按钮(带有文本““)。

获取复制的按钮的Text属性时,运行时错误1004 /错误438,但设置该属性仍然有效


这些按钮连接到此宏(位于PERSONAL.XLSB中):

Option Explicit

Sub ChangeSomething()
    ' The button which called the macro.
    Dim b As Button
    Set b = activeSheet.Buttons(Application.Caller)

    ' Do run the code if the button was not already active.
    If b.Text <> "x" Then        ' SEEMS TO BE THE PROBLEM
        ' Do something

        ' Mark the button as activated.
        b.Text = "x"
        b.Font.Bold = True

    ' If the button was already activated,deactivate it.
    Else
        'Mark the button as deactivated.
        b.Text = " "
    End If
End Sub


此设置之前可以正常工作。但是自复制以来,我得到Runtime Error 1004 “无法设置Button类的Text属性”

处理后,异常似乎为Error 438 “对象不支持此属性或方法”


调试标志着这一行:

If b.Text <> "x" Then

让我感到困惑的是,获取text属性似乎会引发运行时错误,但设置该值就可以了

b.Text = "x"

已更改正确工作簿的正确工作表中的正确按钮。


一旦我手动将按钮的文本更改为除“”之外的其他内容,该宏似乎也可以正常工作。

不幸的是,插入的按钮似乎没有包含在activeSheet.Buttons返回的列表中,因此我无法遍历它们来更改其值。


我不确定是否合适,但是我已经上载了here示例文件。

fgvlty 回答:获取复制的按钮的Text属性时,运行时错误1004 /错误438,但设置该属性仍然有效

我不确定您的问题的详细信息是否正确。如果这些按钮确实是表单控件-并且我认为它们必须是因为我相信ActiveX控件不会返回Caller-那么它们的父对象是Shapes,那么您将调用{{1} }属性中的Text对象。

我想知道您的原始工作表是否有一个名为{em> Buttons 的Shape.TextFrame.Characters对象 其中可能包含类对象形式的按钮列表,称为 Button (因此会出现错误消息),并公开了代码中调用的属性。

没有那个集合和类,代码将更像这样:

Collection

我宁愿怀疑这里有一半复制的代码,而项目的其余部分仍在其他地方。

本文链接:https://www.f2er.com/3165839.html

大家都在问