Excel“运行时错误'424':需要对象”调用布尔函数时

时间:2016-10-11 02:38:58

标签: excel vba excel-vba

VBA新手并尽可能多地学习,所以请不要犹豫,过度通知。

目标:在子中,调用一个函数,当两个对象重叠时,该函数返回布尔值true。这个想法是让用户能够在彼此之间拖放形状,以便轻松创建层次结构。

问题:我收到了“Object required”错误,如评论专栏标题所述。 RecA和RecB是在函数的参数中定义的有问题的形状。名为“Overlap”的函数位于Module1中。

Public Sub CommandButton1_Click()
    Dim Function_Result As Boolean
    Function_Result = Overlap(RecA, RecB) '<--------!

    If Function_Result = True Then
            MsgBox ("swiggity swooty")
    End If
End Sub

从研究中我只能找到使用set之前的Function_Result修饰符的解决方案,我尝试过(以及其他可能的解决方案)无济于事。

如果功能代码非常有用,请告诉我,我可以将其添加到这篇文章中。

Excel 2010

提前致谢!

2 个答案:

答案 0 :(得分:1)

您还没有正确定义自己的形状。如果您的函数使用对象属性来确定重叠,则需要在CommandButton1_Click事件中执行以下操作:

Private Sub CommandButton1_Click()
    Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets(1) 'Assumed on worksheet index 1
    Dim RecA As Shape: Set RecA = ws.Shapes("RecA") 'Assumed RecA is the name of your shape?
    Dim RecB As Shape: Set RecB = ws.Shapes("RecB")
    Dim Function_Result As Boolean

    Function_Result = Overlap(RecA, RecB) 

    If Function_Result = True Then
            MsgBox ("swiggity swooty")
    End If
End Sub

这样,您可以在VBA中将形状设置为对象,现在可以引用它们的对象属性。

答案 1 :(得分:0)

有效的代码:

.service('rootRef', ['FirebaseUrl', Firebase])

我能够比Tyeler的答案更简单一点,因为我的Private Sub CommandButton1_Click() Dim Function_Result As Boolean Dim RecA As Shape Dim RecB As Shape Function_Result = Overlap(RecA, RecB) If Function_Result = True Then MsgBox "swiggity swooty" End If End Sub 函数本身set我的形状(见下文)。

Overlap