Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


39269 / 76732 ←次へ | 前へ→

【42576】Re:トライアル計算について
発言  ハチ  - 06/9/15(金) 12:47 -

引用なし
パスワード
   ▼頑張れ自分 さん:
>>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
1 hits

【42564】トライアル計算について 頑張れ自分 06/9/15(金) 11:07 質問
【42568】Re:トライアル計算について ハチ 06/9/15(金) 11:22 発言
【42571】Re:トライアル計算について 頑張れ自分 06/9/15(金) 11:35 発言
【42576】Re:トライアル計算について ハチ 06/9/15(金) 12:47 発言
【42577】Re:トライアル計算について 頑張れ自分 06/9/15(金) 13:08 お礼
【42578】Re:トライアル計算について ハチ 06/9/15(金) 13:18 発言
【42630】できました 頑張れ自分 06/9/16(土) 23:43 お礼

39269 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free