VBS変数値の割り当てに問題があります。
Dim varName
varName = function(x, y)
varName = function(x, y)
関数は再帰関数であり、それ自体を呼び出します。
Function function(x, y)
If IsObject(dicColumnIndices) Then
function = CInt(dicColumnIndices.Item(y))
Else
Set oCDSGrid = %MyAppObject%
Set dicColumnIndices = CreateObject("Scripting.Dictionary")
intColumnCount = oCDSGrid.ActiveSheet.Columns.Count
For i = 0 To intColumnCount - 1
dicColumnIndices.Add oCDSGrid.ActiveSheet.Columns.Item(i).Label, i
Next
function x, y
End If
End Function
私が見る限り、変数値の割り当ては2回目の試行でのみ発生します。関数が自分自身を再帰的に呼び出すことと関係があると思いました(再帰呼び出しを削除すると問題はなくなります)が、この動作のルーツは何かを学びたいと思います。
StackOverflowとインターネットの両方を調べましたが運がありませんでした。
編集:この問題を解決するために、再帰呼び出しを削除する必要がありました:
Function function(x, y)
If IsObject(dicColumnIndices) Then
function = CInt(dicColumnIndices.Item(y))
Else
Set oCDSGrid = %MyAppObject%
Set dicColumnIndices = CreateObject("Scripting.Dictionary")
intColumnCount = oCDSGrid.ActiveSheet.Columns.Count
For i = 0 To intColumnCount - 1
dicColumnIndices.Add oCDSGrid.ActiveSheet.Columns.Item(i).Label, i
Next
function = CInt(dicColumnIndices.Item(y))
End If
End Function
編集2:最後に、MSDNの助けを借りて、間違った部分を取得しました-2回目の呼び出しです
function x, y
値を何も返さないので、次のように変更する必要があります。
function = function x, y
みんな、ありがとう!