マクロ学習法とは 17(再帰呼び出し)
たとえば設定条件により、マクロAからそのマクロAを再び呼び出してマクロの最初から繰り返し処理をします。(ここで下表の様に赤色にしています)
For ~ Nextや Do Loopも繰り返して処理しますが再帰呼び出しと違って自分自身を呼び出すことでは無いですね。
ロト6ホットナンバー表示マクロ(案)の中のマクロ「入力赤丸」から
ホットナンバーと判定された時「入力赤丸」マクロ実行されます。
上の表の様に間隔が3以下の時、シングル下線と赤く塗つぶす際、下記の簡単なマクロ「入力赤丸」の再帰呼び出しを使っています。ここで条件で再帰呼び出しされたら又マクロ「入力赤丸」を最初から実行して行きます。
マクロ「入力赤丸」には少しおかしなところもありますが、再帰呼び出しのひとつの例になるかと思います。
Sub 入力赤丸()
Dim maruiti As Object
retu = ActiveCell.Column
gyou = ActiveCell.Row
Set maruiti = Application.Cells(gyou, retu)
jj = 1
If IsNumeric(Cells(gyou + jj, retu).Value) = True Then ’セルが数字なら下記の処理
Do Until IsNumeric(Cells(gyou + jj, retu).Value) = False ’数字以外になるまで
If jj > 3 Then Exit Do ’間隔4以上なら終了(数字のセルが4つ以上)
jj = jj + 1
Loop
End If
Cells(gyou + jj, retu).Select
maruiti.Font.Underline = xlUnderlineStyleSingle ’下線引く
maruiti.Font.Color = -16776961 ’赤く塗つぶす
y = y + jj - 1 'データ行チェックの調整
If IsNumeric(Cells(gyou + jj, retu).Value) = True Then Exit Sub ’条件でマクロ終了
入力赤丸 ’再帰呼び出し (Call 入力赤丸 と同様)
End Sub