我对 VBA Excel 相当陌生。我试图通过将代码块插入函数然后调用函数而不是块来重构一些 VBA 宏。这段代码在宏中被多次复制粘贴(仅更改一个常量)。但是,旧解决方案有效,而具有功能的新解决方案则无效。它甚至不会抛出错误消息,它只会冻结整个 Excel 应用程序。你碰巧知道我可能做错了什么吗?
编辑:宏从 SAP 调用,如果它有任何区别。
老的:
Dim tbl As Object
If ThisWorkbook.Container.LinkServer.Items("ITEMS").Table Is Nothing Then
Exit Sub
Else
Set tbl = ThisWorkbook.Container.LinkServer.Items("ITEMS").Table
maxNumRow = ThisWorkbook.Container.LinkServer.Items("ITEMS").Table.rowCount
'... (do stuff)
新的:
Dim tbl As Object
If LinkServer_Table("ITEMS", tbl, maxNumRow) = True Then
'... (do stuff)
...
Function LinkServer_Table( _
ByVal name As String, _
ByRef tbl As Object, _
Optional ByRef rowCount As Long)
If ThisWorkbook.Container.LinkServer.Items(name).Table Is Nothing Then
LinkServer_Table = False
Else
Set tbl = ThisWorkbook.Container.LinkServer.Items(name).Table
rowCount = ThisWorkbook.Container.LinkServer.Items(name).Table.rowCount
LinkServer_Table = True
End If
End Function