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
提前致谢!
答案 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