|
時間がとれたので内容を見てみました。
下記の例で、エラーとなりますね。
そもそもですが、Loop処理の中で再帰呼び出しは不可避なんでしょうか?
何をしようとされているか説明が無いのでよくわかりませんが。
理由は不明ですが、
記法によってエラーが避けられるならそれに従うのがよろしいかと。
Sub test()
[H1:H5].Value = Application.Transpose(Array(1, 2, 3, 5, 1)) 'データ設定
Call 支(1, False, 1) 'エラーとならない
End Sub
Sub test2()
[H1:H5].Value = Application.Transpose(Array(1, 2, 3, 5, 1)) 'データ設定
Call 支2(1, False, 1) '「式が複雑すぎます」というエラーとなる
End Sub
Function 支(ByRef currentRow As Long, ByVal flag As Boolean, ByVal 列 As Byte)
Dim myLevel As Byte
Dim I_Flag As Boolean
With ActiveSheet
myLevel = Val(.Range("H" & currentRow))
Do Until myLevel > Val(.Range("H" & currentRow))
' ここで作業
currentRow = currentRow + 1
If myLevel < Val(.Range("H" & currentRow)) Then Call 支(currentRow, I_Flag, 列)
Loop
End With
End Function
Function 支2(ByRef currentRow As Long, ByVal flag As Boolean, ByVal 列 As Byte)
Dim myLevel As Byte
Dim I_Flag As Boolean
With ActiveSheet
myLevel = Val(.Range("H" & currentRow))
Do
' ここで作業
currentRow = currentRow + 1
If myLevel < Val(.Range("H" & currentRow)) Then Call 支2(currentRow, I_Flag, 列)
Loop Until myLevel > Val(.Range("H" & currentRow))
End With
End Function
|
|