①今回の使用例 sub tenki() dim saki dim kaisu for kaisu = 0 to 3 WorkSheets("Sheet2").range("B" & saki & ":G" & saki).value=Worksheets("sheet1").range("A2:F2").value saki = saki +1 next end sub
②フォローアップ ベーシック 【動画5】 sub listup() dim hida dim migi migi = 5 for hida = 8 to 17 if range("C" & hida).value > 100 then range("F"&migi).value = range("A" & hida).value range("F"&migi).value = range("A" & hida).value range("F"&migi).value = range("A" & hida).value migi = migi + 1 end if next end sub
for next構文は、くり返しの構文です。 for next構文のカウンター変数の値を for ... next の間で利用するも利用しないもプログラマーの自由です。(*)
以下のサンプルコードを、ひとつずつ、実際にステップイン実行してみてください。
Sub tukau_1()
Dim moto
For moto = 1 To 10
Range("A1").Value = "使う" & moto
Next
End Sub
Sub tukau_2()
Dim moto
For moto = 1 To 10
Range("B" & moto).Value = "使う"
Next
End Sub
Sub tukau_3()
Dim moto
For moto = 1 To 10
Range("C" & moto).Value = "使う" & moto
Next
End Sub
Sub tukawanai_1()
Dim moto
For moto = 1 To 10
Range("D1").Value = "使わない"
Next
End Sub
Sub tukawanai_2()
Dim moto
Dim saki
saki = 1
For moto = 1 To 10
Range("E" & saki).Value = "使わない"
Next
End Sub
Sub tukawanai_3()
Dim moto
Dim saki
saki = 1
For moto = 1 To 10
Range("F" & saki).Value = "使わない"
saki = saki + 1
Next
End Sub
Sub tukawanai_4()
Dim moto
Dim saki
saki = 1
For moto = 1 To 10
Range("G1").Value = "使わない" & saki
saki = saki + 1
Next
End Sub
Sub tukawanai_5()
Dim moto
Dim saki
saki = 1
For moto = 1 To 10
Range("H" & saki).Value = "使わない" & saki
saki = saki + 1
Next
End Sub
kanekoさんの投稿
(投稿ID: 4705)
理解できなかったのは、マサラさんが質問した内容と同じ、For next構文の使い方についてです。
以下の通り、自分なりに整理しましたが、認識はあっていますでしょうか。
①今回の使用例
sub tenki()
dim saki
dim kaisu
for kaisu = 0 to 3
WorkSheets("Sheet2").range("B" & saki & ":G" & saki).value=Worksheets("sheet1").range("A2:F2").value
saki = saki +1
next
end sub
②フォローアップ ベーシック 【動画5】
sub listup()
dim hida
dim migi
migi = 5
for hida = 8 to 17
if range("C" & hida).value > 100 then
range("F"&migi).value = range("A" & hida).value
range("F"&migi).value = range("A" & hida).value
range("F"&migi).value = range("A" & hida).value
migi = migi + 1
end if
next
end sub
②今までのの使用例は、行や列をある特定の範囲で指定しセルやその範囲を指定するものだったのに対して、
①今回の使用例は、For~Nextの間のコードを繰り返すという使い方であるように考えました。
まず、この考え方は合っていますでしょうか。
また、この使用例は基礎講座で初めて出てきた使い方であるという認識であっていますでしょうか。
私が見逃している場合は教えていただきたいです。復習したいと思います。
小川 慶一さんのコメント
(コメントID: 6547)
ご質問の趣旨がわかりません。
質問文が理解不能なうえ、以下の2つのサンプルコードの内容が違いすぎるからです。(どこを比較したいのか分かりません)
>①今回の使用例
>②フォローアップ ベーシック 【動画5】
参考までにひとつだけ書くと、以下の[a]は[b]のように書けます。
[c]は[d]のように書けます。(基礎編講座本編第1章)
本動画では、[a], [c]のような書き方ではなく[b], [d]のような書き方を示してみました。
この解説でもしまだ疑問が残るようでしたら、以下の[a], [b], [c], [d] のコードを用いてさらに質問してください。
> 理解できない部分があり、フォローアップ ベーシックを読み返してもやはり分からなかったので質問です。
> 理解できなかったのは、マサラさんが質問した内容と同じ、For next構文の使い方についてです。
> 以下の通り、自分なりに整理しましたが、認識はあっていますでしょうか。
>
> ①今回の使用例
> sub tenki()
> dim saki
> dim kaisu
> for kaisu = 0 to 3
> WorkSheets("Sheet2").range("B" & saki & ":G" & saki).value=Worksheets("sheet1").range("A2:F2").value
> saki = saki +1
> next
> end sub
>
> ②フォローアップ ベーシック 【動画5】
> sub listup()
> dim hida
> dim migi
> migi = 5
> for hida = 8 to 17
> if range("C" & hida).value > 100 then
> range("F"&migi).value = range("A" & hida).value
> range("F"&migi).value = range("A" & hida).value
> range("F"&migi).value = range("A" & hida).value
> migi = migi + 1
> end if
> next
> end sub
>
> ②今までのの使用例は、行や列をある特定の範囲で指定しセルやその範囲を指定するものだったのに対して、
> ①今回の使用例は、For~Nextの間のコードを繰り返すという使い方であるように考えました。
>
> まず、この考え方は合っていますでしょうか。
>
> また、この使用例は基礎講座で初めて出てきた使い方であるという認識であっていますでしょうか。
> 私が見逃している場合は教えていただきたいです。復習したいと思います。
kanekoさんのコメント
(コメントID: 6550)
示していただいた[a]→[b]、[c]→[d]の使用例は理解できています。
お聞きしたいのは、今回の動画で使っていたfor kaisu 0 to 3 ~ nextの使い方についてです。
[d]では変数「moto」を「2」から「11」の数をfor ~nextの間のコードに代入していますが、今回の動画で使った変数「kaisu」はどこにも代入されていません。
結果的には、for ~ nextの間のコードを指定した回数繰り返している様に見受けられます。
ご回答の文にもありますが、二つの例は全く違う使い方だと思うのですが、代入ではなく、間のコードを繰り返すという機能があるという理解でよいのか聞きたいのです。
小川 慶一さんのコメント
(コメントID: 6551)
お返事ありがとうございます。
依然としてご質問の趣旨がつかめませんが...。
for next構文は、くり返しの構文です。
for next構文のカウンター変数の値を for ... next の間で利用するも利用しないもプログラマーの自由です。(*)
以下のサンプルコードを、ひとつずつ、実際にステップイン実行してみてください。
サンプルコードに理解を超えるものがあればどのプロシージャか教えてください。
(*)で示した言葉とここで提示したサンプルコードで間接的に回答になっていますでしょうか。
もしまだお聞きになりたいことと回答内容に根本的な乖離があるようでしたらひきつづき質問してください。
よろしくお願いいたします。
> ご回答ありがとうございます。
> 示していただいた[a]→[b]、[c]→[d]の使用例は理解できています。
>
> お聞きしたいのは、今回の動画で使っていたfor kaisu 0 to 3 ~ nextの使い方についてです。
> [d]では変数「moto」を「2」から「11」の数をfor ~nextの間のコードに代入していますが、今回の動画で使った変数「kaisu」はどこにも代入されていません。
> 結果的には、for ~ nextの間のコードを指定した回数繰り返している様に見受けられます。
> ご回答の文にもありますが、二つの例は全く違う使い方だと思うのですが、代入ではなく、間のコードを繰り返すという機能があるという理解でよいのか聞きたいのです。
kanekoさんのコメント
(コメントID: 6553)
>for next構文のカウンター変数の値を for ... next の間で利用するも利用しないもプログラマーの自由です。(*)
「利用しない」パターンがあるということがわかりませんでした。
理解できました。
ご提示いただいたコードを実行してより理解が深まりました。
このパターンは基礎編では初めて出てきたように感じましたが勘違いでしょうか。
ありがとうございました。
小川 慶一さんのコメント
(コメントID: 6554)
理解につながったようで良かったです (^^
> このパターンは基礎編では初めて出てきたように感じましたが勘違いでしょうか。
for next構文のカウンター変数の値を for ... next の間で一切利用しないケースははじめてかもしれませんね。
10:00ごろのコードは、もちろんそこだけ取り出せば、以下のように書くことも可能です。
for kaisu = 0 to 3
range("B" & kaisu + 2).value = range("A2").value
next
ですが、このようにfor next構文のカウンター値を転記先行指定に使ってしまうと、このループをさらに別のループの中に入れて処理しようとするときに不都合です。(12:00あたり)
そこで、転記先を指定する変数を別途用意しました。
転記先を指定する変数を用意するケースは、当初ご指摘の「フォローアップ ベーシック 【動画5】」等ででてきていますね。
ひきつづきよろしくお願いいたします。
> 丁寧な回答ありがとうございます。
>
> >for next構文のカウンター変数の値を for ... next の間で利用するも利用しないもプログラマーの自由です。(*)
> 「利用しない」パターンがあるということがわかりませんでした。
> 理解できました。
> ご提示いただいたコードを実行してより理解が深まりました。
>
> このパターンは基礎編では初めて出てきたように感じましたが勘違いでしょうか。
>
> ありがとうございました。