我有这个功能:
Function hqt_dsr_Line_list(ByRef segments() As hqt_dsr_Segment) As Integer
...
Dim merged As hqt_dsr_Segment
Call hqt_dsr_Line_merge(segments(0), segments(1), merged)
...
End Function
而且:
Sub hqt_dsr_Line_merge( _
ByRef seg1 As hqt_dsr_Segment, _
ByRef seg2 As hqt_dsr_Segment, _
ByRef merged As hqt_dsr_Segment)
...
End Sub
我不断得到ByRef参数类型不匹配。为什么?在我看来,所有类型都是一致的。
编辑:更确切地说,这是赛普拉斯启用(www.cypressinc.com),这是一个VBA引擎。
edit2:问题是
Call hqt_dsr_Line_merge(segments(0), segments(1), merged)
Sub似乎认为类型不同。另外,hqt_dsr_Segment是一个类型,而不是类。
edit3:选项explicit是打开的,3 ByRefs的原因是否则我得到错误"用户定义的类型可能不会被传递ByVal"
最终编辑:我选择复制/粘贴一些代码以节省时间并在代码中注明它的原因。我尝试了很多东西,但最后我认为赛普拉斯启用可能会搞砸了。这个VBA引擎有一个奇怪的行为并不常见,我没有时间找到解决方案(或找出解决方案是否存在)。尽管如此,谢谢大家。