传递logging集types错误
试图将Recordset传递给我的某个类的某个方法时出现types错误。 我的代码如下所示:
Dim rs As ADODB.recordset Set rs = New ADODB.recordset 'do some connection stuff 'create command rs.Open cmd dataWriter.write(rs)
该方法如下所示:
sub write(byRef record as ADODB.recordset) range("A1").CopyFromRecordset record end sub
一切工作,除了types错误时,我试图将logging传递给write
子(例如,如果我打电话range("A1").copyfromrecordset rs
在第一个代码块工作正常)。
有什么想法吗? 谢谢。
dataWriter.write (rs)
删除括号。 这些强制rs
被评估并通过ByVal
无论签名write
什么:基本上,你传递logging集的默认属性值(这是它的Fields
属性getter,所以一个ADODB.Fields
对象)到一个参数期望ADODB.Recordset
,因此types不匹配错误。
dataWriter.Write rs
将通过ByVal
传递的logging集引用,因为Write
完全不需要重新引用该引用。
Sub Write(ByVal record As ADODB.Recordset) Range("A1").CopyFromRecordset record End Sub
外带是括号评估expression式 – 在直接窗格中尝试:
?TypeName(New ADODB.Recordset) Recordset ?TypeName((New ADODB.Recordset)) Fields
请注意, Range("A1")
隐式引用活动工作表,这是sl。。 你应该在那里明确地采取一个target
参数:
Sub Write(ByVal record As ADODB.Recordset, ByVal target As Excel.Worksheet) target.Range("A1").CopyFromRecordset record End Sub