私はVBAExcelにかなり慣れていません。コードのチャンクを関数に挿入し、チャンクの代わりに関数を呼び出すことで、VBAマクロをリファクタリングしようとしています。コードのチャンクは、マクロに何度もコピーペーストされます(1つの定数のみを変更します)。ただし、古いソリューションは機能しますが、機能を備えた新しいソリューションは機能しません。エラーメッセージもスローせず、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