久しぶりに Excel のマクロについて
質問させていただきます。
実際に作ったマクロはとても長いのですが
問題となった部分を簡潔にまとめて記載します。
Sub test()
Range("A1") = 0
入力 = Application.InputBox("入力")
If 入力 = "a" Then
Call test
End If
Call test2
End Sub
Sub test2()
Range("A1") = Range("A1") + 1
End Sub
これにより
「a」を入力している限りは先へ進めず
「a」以外を入力したところで
セルA1に「1」と表示させるつもりでした。
しかし実際には
「a」を入力した回数プラス1が
セルA1に表示されてしまいます。
仕方がないので
Call test
の後に
Exit Sub
と入力したところ、希望通り
セルA1には「1」と表示されました。
Exit Sub
を入力しなくても
何度も test() に戻るだけで
Range("A1")
に影響するのは、最後の
Call test2
による1回だけと思うのですが
なぜこのような結果になるのでしょうか。
今回もマクロについては
まだまだ素人だと痛感しているところです。
回答をよろしくお願いいたします。
お礼
早速のご回答 ありがとうございました。 大変分かりやすく 説明していただきました。 おかげさまで とてもすっきりしました。 「再帰呼び出し」という言葉 これからしっかり勉強したいと思います。 何かありましたら そのときはまた ぜひよろしくお願いいたします。