Excel VBA質問箱 IV

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

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


18643 / 76732 ←次へ | 前へ→

【63528】Re:callで呼び出すとき
お礼  タルジャ  - 09/11/15(日) 22:30 -

引用なし
パスワード
   ▼ichinose さん:
>こんばんは。
>>モジュール1で条件が合わない時は処理を抜けているのに
>>次のCallに進んでしまうのはなぜでしょう?
>サンプル3のコードは、
>
>>Sub サンプル3()
>>Call サンプル1
>>Call サンプル2
>>End Sub
>
>これは、サンプル1を実行した後、
>サンプル2を実行するコードですよね?
>
>サンプル1は、
>
>>Sub サンプル1()
>>
>>Dim i As Integer
>>Dim a As Integer
>>
>>a = Cells(Rows.Count, 1).End(xlUp).Row
>>  For i = 1 To a
>>    If Cells(i, 1).Value = "みかん" Then
>>    Cells(i, 2).Value = "おいしい"
>>    Else
>>    Exit For
>>    
>>    End If
>>    
>>  Next
>End Sub
>
>>モジュール1で条件が合わない時は処理を抜けているのに
>このサンプル1の仕様が本当は何をしたいのか分かりませんが・・・。
>上記のコードで処理を抜けているコードって、
>
>>    Exit For
>これのことですか?
>これが抜けているのは For〜Nextのループを抜けているのですよ!!
>プログラムの流れは、For〜Nextのループを抜ければ、End Subですから、
>呼び出されたサンプル3に戻ります。
>よって、戻ってきたサンプル3では、只、サンプル2を呼び出しているだけですから、
>サンプル1の結果には、関係なく、サンプル2が呼び出されます。
>
>仕様は想像ですが、
>
>Sub サンプル3()
>  Dim retcode As Boolean
>  Call サンプル1(retcode)
>  If retcode Then Call サンプル2
>End Sub
>
>
>Sub サンプル1(ret As Boolean)
>  Dim i As Integer
>  Dim a As Integer
>  ret = False
>  a = Cells(Rows.Count, 1).End(xlUp).Row
>  For i = 1 To a
>    If Cells(i, 1).Value = "みかん" Then
>      Cells(i, 2).Value = "おいしい"
>      ret = True '条件に合った
>    End If
>  Next
>End Sub
>
>
>Sub サンプル2()
>  Dim i As Integer
>  Dim a As Integer
>  a = Cells(Rows.Count, 1).End(xlUp).Row
>  For i = 1 To a
>   If Cells(i, 1).Value = "いちご" Then
>     Cells(i, 3).Value = "こっちもおいしい"
>   End If
>  Next
>End Sub
>
>
>というようにパラメータ(Retcode)を使って
>サンプル1での実行結果がサンプル3のプロシジャーにわかるように
>すると、そのパラメータの内容で処理を分けることが出来ます。
>
>実際には、Functionを使う方が一般的ですが、今回は、Subを使って、
>パラメータで結果を返す方法をとりました。


ichinoseさん、ありがとうございます。
パラメータ(Retcode)がよくわかりません。
ichinoseさんのアドバイスを元に勉強しなおします。
ありがとうございました。

1 hits

【63524】callで呼び出すとき タルジャ 09/11/15(日) 19:58 質問
【63526】Re:callで呼び出すとき よろずや 09/11/15(日) 21:12 回答
【63527】Re:callで呼び出すとき ichinose 09/11/15(日) 21:35 発言
【63528】Re:callで呼び出すとき タルジャ 09/11/15(日) 22:30 お礼
【63532】Re:callで呼び出すとき ichinose 09/11/16(月) 7:11 発言
【63541】Re:callで呼び出すとき タルジャ 09/11/16(月) 19:36 お礼
【63530】Re:callで呼び出すとき タルジャ 09/11/15(日) 22:45 お礼

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