5倍速!メールマガジン
外部アカウントで登録
受講生の声
新着の講座投稿
新着の講座コメント
新着のノート投稿
投稿一覧へ新着のノートコメント
表示できる投稿はありません。
サイト運営者紹介
小川 慶一講師/教材/システム開発者紹介
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
ほとさんの投稿
(投稿ID: 4519)
こんにちわ
先生の講義はわかりやくすてすらすら頭に入ってきます。
この調子で進めていきたいと思います。
[2]の回答を復習したとき、最後のfor next構文でお団子のとる範囲を間違えて最後の行を取りこぼしてしまいました。
間違いだということはすぐ理解できたのですが、
その時のマクロの実行結果が私の推測と違っていたので、質問させていただきました。私の推測では、F6に6が表示されると思ったのですが、実際はF7に表示されました。理由をお教えいただけますでしょうか。
復習で書いたマクロは以下のものとなります。
Sub countif_3()
Dim goukei
Dim gyo2
For gyo2 = 4 To 6
goukei = 0
Dim gyo
For gyo = 4 To 18
If Range("c" & gyo).Value = Range("e" & gyo2).Value Then
goukei = goukei + 1
End If
Next
Next
Range("f" & gyo2) = goukei
End Sub
小川 慶一さんのコメント
(コメントID: 6233)
ほとさん:
> 私の推測では、F6に6が表示されると思ったのですが、実際はF7に表示されました。理由をお教えいただけますでしょうか。
言い換えると、ご質問は、「For Next構文で使うカウンター用の変数が、For Next構文を抜けたときにどういう値になっているか?」ということですね。
経験的に、どうも、For Next構文では、
で、xの値がaからbの範囲にいなくなったタイミングでループを抜けるようですね。
なので、ループを抜けた直後は、 b + 1 になっているようです。
とはいえ、Visual Basicという言語がそれを保証しているわけではありません。
For Next構文のカウンター変数の値は、For Next構文内では利用価値がありますが、For Next構文を抜けたら利用価値はない、と思っておいてください。
この件は話しだすと長くなるので、まずはこのへんで。
ほとさんのコメント
(コメントID: 6236)
ループを抜けた時の挙動は保証されていないということですね。
承知しました。
今後、気をつけるポイントにしたいと思います。