趣味のエクセルで当てよう!ロト・ナンバーズ

当選狙いで、ナンバーズ4をメインにロト、ビンゴ5などの各種データリストや、それらの分析用エクセルVBAなどについて書いてます。

マクロ学習法とは 17(再帰呼び出し)

たとえば設定条件により、マクロAからそのマクロAを再び呼び出してマクロの最初から繰り返し処理をします。(ここで下表の様に赤色にしています)




For ~ Nextや Do Loopも繰り返して処理しますが再帰呼び出しと違って自分自身を呼び出すことでは無いですね。


    マクロ 制御式






ロト6ホットナンバー表示マクロ(案)の中のマクロ「入力赤丸」から


ホットナンバーと判定された時「入力赤丸」マクロ実行されます。


上の表の様に間隔が3以下の時、シングル下線と赤く塗つぶす際、下記の簡単なマクロ「入力赤丸」の再帰呼び出しを使っています。ここで条件で再帰呼び出しされたら又マクロ「入力赤丸」を最初から実行して行きます。


LOTO6 ホットナンバー表示マクロ(案)


マクロ「入力赤丸」には少しおかしなところもありますが、再帰呼び出しのひとつの例になるかと思います。


 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