繰り返し文

「繰り返し文」の編集履歴(バックアップ)一覧はこちら

繰り返し文」(2015/04/29 (水) 11:09:25) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

<p>繰り返し</p>
<p>繰り返し</p> <p> </p> <h3 class="midasi-3" style="margin-left:5px;font-size:1em;color:rgb(0,0,102);padding:3px 3px 3px 10px;border:1px solid rgb(0,100,0);font-family:'MS PGothic';line-height:normal;background-color:rgb(255,255,204);"> <a name="for_next">For~Next</a>   <a href="http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_for_next.html#top">topへ</a></h3> <ul style="color:rgb(0,0,0);font-family:'MS PGothic';font-size:medium;line-height:normal;"><li style="padding-bottom:5px;padding-top:5px;"> 繰り返す回数が決まっている場合、指定回数ステートメントを実行します。 <ol type="A"><li style="padding-bottom:5px;padding-top:5px;">C1からC10までにA1*B1の計算結果を入力する。 <ul><li style="padding-bottom:5px;padding-top:5px;"> <table cellspacing="0" class="tblexl" style="border-collapse:collapse;padding:2px;"><colgroup><col span="1" width="600" /></colgroup><tbody><tr><td class="siro" style="border:1px solid rgb(0,102,0);">Sub rei1()<br /> Dim myCnt As Long<br />   <font color="#FF0000">For myCnt = 1 To 10</font><br />     Cells(myCnt, 3).Value = Cells(myCnt, 1).Value * Cells(myCnt, 2).Value<br />   <font color="#FF0000">Next myCnt</font><br /> End Sub</td> </tr></tbody></table></li> <li style="padding-bottom:5px;padding-top:5px;">実行結果<br /><img border="0" height="204" src="http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_02/vba05_01.gif" width="266" alt="vba05_01.gif" /></li> </ul></li> <li style="padding-bottom:5px;padding-top:5px;">増減値に「2」を設定して1行置きに計算結果を入力する <ul><li style="padding-bottom:5px;padding-top:5px;"> <table cellspacing="0" class="tblexl" style="border-collapse:collapse;padding:2px;"><colgroup><col span="1" width="600" /></colgroup><tbody><tr><td class="siro" style="border:1px solid rgb(0,102,0);">Sub rei1()<br />  Dim myCnt As Long<br />   <font color="#FF0000">For myCnt = 1 To 10 <b>Step</b> 2</font><br />     Cells(myCnt, 3).Value = Cells(myCnt, 1).Value * Cells(myCnt, 2).Value<br />   <font color="#FF0000">Next myCnt</font><br /> End Sub</td> </tr></tbody></table></li> <li style="padding-bottom:5px;padding-top:5px;">実行結果<br /><img border="0" height="207" src="http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_02/vba05_02.gif" width="265" alt="vba05_02.gif" /></li> </ul></li> <li style="padding-bottom:5px;padding-top:5px;"> カウンタ(myCnt)が5になったら、途中でループを抜ける。 <ul><li style="padding-bottom:5px;padding-top:5px;"> <table cellspacing="0" class="tblexl" style="border-collapse:collapse;padding:2px;"><colgroup><col span="1" width="600" /></colgroup><tbody><tr><td class="siro" style="border:1px solid rgb(0,102,0);">Sub rei1()<br />  Dim myCnt As Long<br />   <font color="#FF0000">For myCnt = 1 To 10</font><br />     <font color="#FF0000">If myCnt = 5 Then <b>Exit For</b></font><br />       Cells(myCnt, 3).Value = Cells(myCnt, 1).Value * Cells(myCnt, 2).Value<br />   <font color="#FF0000">Next myCnt</font><br /> End Sub</td> </tr></tbody></table></li> <li style="padding-bottom:5px;padding-top:5px;">実行結果<br /><img border="0" height="207" src="http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_02/vba05_03.gif" width="263" alt="vba05_03.gif" /></li> </ul></li> <li style="padding-bottom:5px;padding-top:5px;">2重ループの例 <ul><li style="padding-bottom:5px;padding-top:5px;">下図のような九九の表を作成してみます<br /><img border="0" height="245" src="http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_02/vba05_05.gif" width="345" alt="vba05_05.gif" /></li> <li style="padding-bottom:5px;padding-top:5px;"> 入力するセルはB2からになるので、ループの開始値「1」に1を加えて <font color="#FF0000">Cells(i + 1, j + 1)</font> とすることで調整しています。 <table cellspacing="0" class="tblexl" style="border-collapse:collapse;padding:2px;"><colgroup><col span="1" width="600" /></colgroup><tbody><tr><td class="siro" style="border:1px solid rgb(0,102,0);">Sub rei_kuku1()<br />   Dim i As Integer<br />   Dim j As Integer<br /><br />   <font color="#FF0000">For i = 1 To 9</font><br />     <font color="#009900">For j = 1 To 9</font><br />       Cells(i + 1, j + 1).Value = i * j<br />     <font color="#009900">Next j</font><br />   <font color="#FF0000">Next i</font><br /> End Sub</td> </tr></tbody></table></li> <li style="padding-bottom:5px;padding-top:5px;"> また、A1を基準にずらして入力すると考えれば、Offsetを利用して <font color="#FF0000">Range("A1").Offset(i, j).Value = i * j </font>と書くこともできます。 <table cellspacing="0" class="tblexl" style="border-collapse:collapse;padding:2px;"><colgroup><col span="1" width="600" /></colgroup><tbody><tr><td class="siro" style="border:1px solid rgb(0,102,0);">Sub rei_kuku1()<br />   Dim i As Integer<br />   Dim j As Integer<br /><br />   <font color="#FF0000">For i = 1 To 9</font><br />     <font color="#009900">For j = 1 To 9</font><br />       <font color="#FF0000">Range("A1").Offset(i, j).Value = i * j</font><br />     <font color="#009900">Next j</font><br />   <font color="#FF0000">Next i</font><br /> End Sub</td> </tr></tbody></table></li> <li style="padding-bottom:5px;padding-top:5px;">下図のようになります。<br /><img border="0" height="250" src="http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_02/vba05_06.gif" width="347" alt="vba05_06.gif" /></li> </ul></li> <li style="padding-bottom:5px;padding-top:5px;">2重ループの例2 <ul><li style="padding-bottom:5px;padding-top:5px;">下図のような九九の表を作成してみます<br /> この例では1行目とA列の掛ける数値がランダムに入力されています。<br /><img border="0" height="247" src="http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_02/vba05_07.gif" width="353" alt="vba05_07.gif" /></li> <li style="padding-bottom:5px;padding-top:5px;"> 計算は1行目とA列の値ですので、基準となるA1セルからの位置関係で計算ができます。<br /><font color="#FF0000">Range("A1").Offset(i, j).Value = Range("A1").Offset(i, 0).Value * Range("A1").Offset(0, j).Value</font> としました。 <table cellspacing="0" class="tblexl" style="border-collapse:collapse;padding:2px;"><colgroup><col span="1" width="600" /></colgroup><tbody><tr><td class="siro" style="border:1px solid rgb(0,102,0);">Sub rei_kuku1()<br />   Dim i As Integer<br />   Dim j As Integer<br /><br />   <font color="#FF0000">For i = 1 To 9</font><br />     <font color="#009900">For j = 1 To 9</font><br />        Range("A1").Offset(i, j).Value = _<br />          Range("A1").Offset(i, 0).Value * Range("A1").Offset(0, j).Value<br />     <font color="#009900">Next j</font><br />   <font color="#FF0000">Next i</font><br /> End Sub</td> </tr></tbody></table></li> <li style="padding-bottom:5px;padding-top:5px;">下図のようになりました。<br /><img border="0" height="241" src="http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_02/vba05_08.gif" width="346" alt="vba05_08.gif" /></li> </ul></li> </ol></li> </ul><h3 class="midasi-3" style="margin-left:5px;font-size:1em;color:rgb(0,0,102);padding:3px 3px 3px 10px;border:1px solid rgb(0,100,0);font-family:'MS PGothic';line-height:normal;background-color:rgb(255,255,204);"> <a name="each">For Each In~Next</a>   <a href="http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_for_next.html#top">topへ</a></h3> <ul style="color:rgb(0,0,0);font-family:'MS PGothic';font-size:medium;line-height:normal;"><li style="padding-bottom:5px;padding-top:5px;">オブジェクトを繰り返し処理します。 <ol type="A"><li style="padding-bottom:5px;padding-top:5px;">セル範囲を繰り返し処理します。<br /> セル範囲(C1:C10)に(2つ左列のセルの値)*(1つ左列のセルの値)を入力します。 <ul><li style="padding-bottom:5px;padding-top:5px;"> <table cellspacing="0" class="tblexl" style="border-collapse:collapse;padding:2px;"><colgroup><col span="1" width="600" /></colgroup><tbody><tr><td class="siro" style="border:1px solid rgb(0,102,0);">Sub rei1()<br />  Dim myRng As Range<br />  Dim c As Range<br />  Set myRng = Range("C1:C10")<br />   <font color="#FF0000">For Each c In myRng</font><br />     c.Value = c.Offset(0, -2).Value * c.Offset(0, -1).Value<br />   <font color="#FF0000">Next c</font><br /> End Sub</td> </tr></tbody></table></li> <li style="padding-bottom:5px;padding-top:5px;">実行結果<br /><img border="0" height="204" src="http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_02/vba05_01.gif" width="266" alt="vba05_01.gif" /></li> </ul></li> </ol></li> </ul><h3 class="midasi-3" style="margin-left:5px;font-size:1em;color:rgb(0,0,102);padding:3px 3px 3px 10px;border:1px solid rgb(0,100,0);font-family:'MS PGothic';line-height:normal;background-color:rgb(255,255,204);"> <a name="do_loop">Do~Loop</a>   <a href="http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_for_next.html#top">topへ</a></h3> <ul style="color:rgb(0,0,0);font-family:'MS PGothic';font-size:medium;line-height:normal;"><li style="padding-bottom:5px;padding-top:5px;">ループ条件を満たしている間は繰り返す。Do While<br /> ループ条件が満たされるまで繰り返す。Do Until</li> <li style="padding-bottom:5px;padding-top:5px;"> 抜け出す条件が適当でない時、無限ループに入り終了できなくなります。 <ul><li style="padding-bottom:5px;padding-top:5px;"><font color="#009900">[Esc]キーを押すと、コードの実行が中断できます。</font><br /> タイミングが悪く中断できない時は[Esc]キーを押し続けます。 <ul><li style="padding-bottom:5px;padding-top:5px;"> [CTRL]+[Break(Pause)](DOS-V機)または[CTRL]+[STOP](NECの98シリーズ)でも中断できます。</li> </ul></li> </ul><ol type="A"><li style="padding-bottom:5px;padding-top:5px;">myCntが5以下の時は繰り返し実行する。 <ul><li style="padding-bottom:5px;padding-top:5px;"> <table cellspacing="0" class="tblexl" style="border-collapse:collapse;padding:2px;"><colgroup><col span="1" width="600" /></colgroup><tbody><tr><td class="siro" style="border:1px solid rgb(0,102,0);">Sub rei1()<br />  Dim myCnt As Long<br />  myCnt = 1<br />   <font color="#FF0000">Do <b>While</b> myCnt &lt;= <b>5</b></font><br />     Cells(myCnt, 3).Value = Cells(myCnt, 1).Value * Cells(myCnt, 2).Value<br />     myCnt = myCnt + 1<br />   <font color="#FF0000">Loop</font><br /> End Sub</td> </tr></tbody></table><ul><li style="padding-bottom:5px;padding-top:5px;"> 実行後に条件判断する時はLOOPの後ろにWhileを書きます<br /> この例では「myCnt &lt; 6」となります。 <table cellspacing="0" class="tblexl" style="border-collapse:collapse;padding:2px;"><colgroup><col span="1" width="600" /></colgroup><tbody><tr><td class="siro" style="border:1px solid rgb(0,102,0);">Sub rei1()<br />  Dim myCnt As Long<br />  myCnt = 1<br />   <font color="#FF0000">Do</font><br />     Cells(myCnt, 3).Value = Cells(myCnt, 1).Value * Cells(myCnt, 2).Value<br />     myCnt = myCnt + 1<br />   <font color="#FF0000">Loop<font color="#FF0000"><b> While</b></font> myCnt &lt; <b>6</b></font><br /> End Sub</td> </tr></tbody></table></li> </ul></li> <li style="padding-bottom:5px;padding-top:5px;">実行結果<br /><img border="0" height="208" src="http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_02/vba05_04.gif" width="267" alt="vba05_04.gif" /></li> </ul></li> <li style="padding-bottom:5px;padding-top:5px;">myCntが5を超えたら繰り返しを抜け出す。 <ul><li style="padding-bottom:5px;padding-top:5px;"> <table cellspacing="0" class="tblexl" style="border-collapse:collapse;padding:2px;"><colgroup><col span="1" width="600" /></colgroup><tbody><tr><td class="siro" style="border:1px solid rgb(0,102,0);">Sub rei1()<br />  Dim myCnt As Long<br />  myCnt = 1<br />   <font color="#FF0000">Do <b>Until</b></font> myCnt &gt; 5<br />     Cells(myCnt, 3).Value = Cells(myCnt, 1).Value * Cells(myCnt, 2).Value<br />     myCnt = myCnt + 1<br />   <font color="#FF0000">Loop</font><br /> End Sub</td> </tr></tbody></table></li> <li style="padding-bottom:5px;padding-top:5px;">実行結果<br /><img border="0" height="208" src="http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_02/vba05_04.gif" width="267" alt="vba05_04.gif" /></li> </ul></li> <li style="padding-bottom:5px;padding-top:5px;"> IF文で抜け出す条件を書き込む(myCntが5を超えたら繰り返しを抜け出す) <ul><li style="padding-bottom:5px;padding-top:5px;"> <table cellspacing="0" class="tblexl" style="border-collapse:collapse;padding:2px;"><colgroup><col span="1" width="600" /></colgroup><tbody><tr><td class="siro" style="border:1px solid rgb(0,102,0);">Sub rei1()<br />  Dim myCnt As Long<br />  myCnt = 1<br />   <font color="#FF0000">Do</font><br />     Cells(myCnt, 3).Value = Cells(myCnt, 1).Value * Cells(myCnt, 2).Value<br />     myCnt = myCnt + 1<br />     If myCnt &gt; 5 Then <font color="#FF0000"><b>Exit Do</b></font><br />   <font color="#FF0000">Loop</font><br /> End Sub</td> </tr></tbody></table></li> <li style="padding-bottom:5px;padding-top:5px;">実行結果<br /><img border="0" height="208" src="http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_02/vba05_04.gif" width="267" alt="vba05_04.gif" /></li> </ul></li> </ol></li> </ul>

表示オプション

横に並べて表示:
変化行の前後のみ表示: