|
▼頑張れ自分 さん:
>>jを広域変数で宣言すれば動作はするでしょうけど
>>ループで使っていますので引数で渡したほうがいいと思います。
>
>の部分が、自分にはまだ理解できないです・・・
>もう少し詳しく教えて頂ければ助かります・・・
>
>よろしくお願い致します。
>モジュールの先頭に
>Option Explicit
>を入れて、
こっちはやってみましたか?
変数を宣言するクセをつければ、jの渡し方も解ってくると思います。
説明がヘタクソなので・・
「広域変数」で検索すれば参考になるページは沢山出てきます。
http://www.bekkoame.ne.jp/~poetlabo/COMP/Excel/VBALEC/arg.htm
など。
For Nextで使うならまだマシですけどDo Loopなどで多様すると
こんなバグになることもあります。初期化を忘れなければいいんですけど。
↓のマクロを結果を見ながら、数回実行してみてください。
Private i As Integer
Sub Test()
'i = 0: j = 0 '変数の初期化を省略すると・・・
Do Until j = 10
Range("A1").Offset(j) = i
i = i + 1
Range("B1").Offset(j) = j
j = j + 1
Loop
End Sub
'別モジュールでこんな感じも
Private i As Integer
Sub Test2()
Dim i As Integer '間違ってiを宣言してしまった
For i = 1 To 5
Call Msg_Test
Next i
End Sub
Sub Msg_Test()
'広域変数iを表示(のつもり)
MsgBox "変数i= " & i
End Sub
|
|