サイトアイコン 独学エクセル塾

【マクロVBA練習問題20】強制・途中終了・ループ抜け出し!IFとExit Sub・Forを組み合わせる




練習問題と内容について

・練習問題の狙い

このシリーズでは課題を元にマクロVBAを実践することでスキルを身につけることが出来ます。

正直、ソースコード作成については実践あるのみです!

答えのコードについては数例挙げますが、「もっといい答えがある」などの意見があれば

問い合わせから連絡ください!  

こんな問題を作ってほしいなどの意見もお待ちしております!

・練習問題20について

こちらはマクロVBAの知識で少し発展した課題になります。

強制終了・途中終了・ループ抜け出す練習問題となります。

それでは頑張っていきましょう!

練習問題の内容と動作説明

問題内容

セル番地A1からA10まで順番に数値を2倍にしていき、C列に出力する。その数値が100を超えた場合に処理を終了する。

動作説明

BAを使用して、セル番地A1からA10までの数値を順番に2倍にしてC列に出力します。

処理中、出力した数値が100を超えた場合には処理を終了します。

ヒント


以下のヒントを参考にして解答コードを作成してみてください。

・ヒントその1

ループ構造を使用して、セルの範囲を順番に処理します。

ループ変数を使用して、セルの行番号や列番号を更新していく方法を考えてみましょう。

・ヒントその2

条件を満たすと繰り返し処理抜け出す必要があります。

例えば「For Next」で繰り返し処理をしている場合は、「Exit For」でループを抜け出します。

・ヒントその3

条件を満たすと強制終了する必要があります。

こちらはとてもシンプルで「Exit Sub」で強制終了ができます。

以上のヒントを参考に課題に取り組んでみてください!

 

最新・便利な機能を搭載したExcel・officeを試しませんか?
Excel 2013以下を使用している方はサポートが終了しているので注意が必要です!
【最新2023年】Excel・Officeの価格比較!あなたに合ったオススメの製品の選定方法から購入 ► 独学エクセル塾 (dokugakuexcel.com)
 

 

解答コード

では回答を見ていきましょう!

・回答その①

Sub Exercise20to1()
Dim row As Integer
Dim value As Double

For row = 1 To 10
 value = Cells(row, 1).value * 2
 Cells(row, 3).value = value
  If value > 100 Then
   Exit For
  End If
Next row
End Sub

上記のコードもセル番地A1からA10までの数値を順番に2倍にし、C列に出力するものです。

処理中、出力した数値が100を超えた場合には処理を終了します。

解答コードのポイント

1. rowというループ変数を使用して、行番号を順番に更新します。
2. value変数にセルの値を2倍にした結果を代入します。
3. Range(“A” & row).Valueのようにセル番地を文字列と結合して指定します。
4. Range(“B” & row).Value = valueのようにB列に結果を出力します。
5. If value > 100 Then Exit Forによって、数値が100を超えた場合にループを終了します。

それでは実行してみましょう。
結果はこのようになります。

A6で100を超えたので、ループを抜け出すことが出来ました。

・回答その②

Sub Exercise20to2()
Dim row As Integer
Dim value As Double

For row = 1 To 10
 value = Cells(row, 1).value * 2
 Cells(row, 3).value = value
  If value > 100 Then
   Exit Sub
  End If
Next row
End Sub

先ほどは条件を満たすと、ループを抜け出す方法でしたが、今回は「強制終了」で処理しています。

条件を満たすと「Exit Sub」で強制終了する仕組みです。

 

 

必要な知識

この問題を解くためには、以下の基本的な知識が必要です。

ループ構造

繰り返し処理をするために、セル範囲内の各セルを順番に読み取るループ構造が必要です。
For Nextループを使った反復処理を利用した反復処理について理解しておくと良いでしょう。

これらの知識を応用して、問題を解くためのコードを作成しましょう。  

ループの抜け出し・強制終了

 VBAでは、ループ処理をよく使用しますが、途中でループ処理を中断したい場合があると思います。
その際は「Exit For」を使用してループ処理を抜け出します。

さらに強制終了では「Exit Sub」を使用することで直ちに処理を終了することが出来ます。

場面によって使い分けてください。

ループ抜け出し:Exit For
強制終了:Exit Sub

まとめ

この練習問題では、Excel VBAの基本的な概念と構文に触れながら、セルの操作やループ処理、条件分岐の活用方法を学ぶことができます。

具体的には、セル番地を指定して値を読み取ったり書き込んだりする方法、
ループ構造を使ってセル範囲を順番に処理する方法、条件分岐を使用して特定の条件に基づいて処理を終了する方法などが含まれています。

これらの基本的な知識と技術を身につけることで、VBAを使用してExcelの操作を自動化する能力を向上させることができます。
また、問題の難易度を徐々に上げることで、より高度なVBAのスキルを磨くことができます。

練習問題を通じて、VBAの基礎を学びながら自身のスキルを向上させていきましょう。
練習問題は段階的に難しくなっていくので、自分のペースで取り組むことをおすすめします。

以上が練習問題20となります。お疲れ様でした!

モバイルバージョンを終了