エクセルVBAでDo-Whileループを使用する方法

あなたのような読者が、MUOを支えています。当サイトのリンクを使って購入された場合、アフィリエイト報酬を得ることがあります。続きを読む

ループはどんなコーディング言語にも不可欠な要素で、言語によって様々なループを使うことで、多くの反復作業を自動化することができます。ExcelのVBAにもループのオプションがあり、それぞれが異なる目的をもっています。

ループは、始点と終点、条件、パラメータを定義することで使用することができます。VBAのループの中でも特に有名なのがdo-whileループで、データの自動化に使うことができます。ここでは、Excel VBAのDo-whileループの使い方を紹介します。このループは、手動で行う作業を大幅に簡略化することができる必須のループ手法です。

スクロールして内容を続ける

Excel VBAのDo-Whileループとは何ですか?

Do-whileループは非常に簡単で、特定の条件に基づいて希望の出力を生成したい場合に、このループを使用して命令を実行することができます。ループは、定義された条件がTrueになるまで実行されます。プログラムがFalseの値を検出すると、ループは終了し、指定されたセルに結果が表示されます。

Do-whileループは、さまざまな段階、さまざまな基準で使用することができます。メインの外側ループの中に複数のループを使用して、その使用方法を強化することもできます。初心者の方は、VBAプログラミングのチュートリアルを参考にして、この分野の知識とスキルを高めてください。

Excel VBAのDo-Whileループ's構文

do-whileループは、あらかじめ定義された構造を持っており、それに従うことで、エラーを発生させることなくスムーズに機能するようになります。以下、参考までにその構文を示します:

Do while[condition_reference][Criteriaステートメント]ループ

ループはdo-whileキーワードで始まり、その後に開始参照と終了参照が続きます。構文の最初の部分は、ループ全体を制御します。次に、ループが実行されるたびに実行されるステートメントを定義する必要があります。

最後に、ループ条件がFalseになると、loopキーワードが実行され、ループが終了します。これは全体的な構造であり、これを改良してさまざまなアクションを実行することができます。ここでは、Do-Whileループの動作に慣れるためのいくつかの例を示します。

最初のDo-Whileループのコードを書く

Aの列に2の倍数を表示したいとします。条件は、カウンターが20になるまで数字を表示することです。

そのためには、ExcelのDeveloperタブに移動してコーディングエディターを開きます。あるいは、Alt F11を押してコーディングエディターを直接開きます。コードエディター・ウィンドウで、「挿入」タブをクリックし、新しいモジュールを追加します。

このモジュールウィンドウ内にすべてのコードを記述する必要があります。モジュール内に以下のコードを追加してください:

Sub dowhileloop()Dim aAsIntegera =1Do Whilea <=10Cells(a, 1) = 2 * aa = a1LoopEndSubBlock of code in VBA\'s coding editor

コードの説明

ここでは、基本をマスターするために、コードの内訳を説明します':

  • サブルーチンを使うExcel VBAでコードを書き始めるには、サブルーチン関数(Sub)で外殻を作成します。コードの目的と共鳴するような、意味のある名前を付けます。この例では、dowhileloopという名前を使い、その後に()を付けることができます。
  • データ型を定義する:変数のデータ型を宣言するには、ディメンション(dim)関数を使用する必要があります。データ型を宣言することで、コードを効率化し、実行速度を向上させることができます。この場合、変数aは整数値を格納するので、整数データ型を使用して定義します。この変数に開始行番号を格納して、Do-Whileループの開始データポイントを宣言することができます。
  • 条件を定義する:さて、いよいよdo-whileループを制御するための条件を渡します。do whileキーワードの後に条件を指定することができます。ループを10回実行したいので、a < = 10という条件を使用します。
  • 実行可能なステートメントを渡すVBAのCells関数とRange関数の違いを知っておくことは重要です。Cells関数は、VBA内の行と列の参照を使用します。例えば、最初の繰り返しでaの値=1の時、セル式は(1,1)となります。VBA'のメモリ上では、これはセルA1に変換されます。ループが実行されるたびに、定義された変数の値が増加し、参照は次の利用可能なセルに移動します。
  • 変数をインクリメントする:セルの値を増加させるために、= a 1ステートメントを渡すことができます。これにより、ループは条件の次の部分に移動します。ループは、条件がFalseになるまで実行され続けます。
  • ループ条件を終了する:条件がFalseになったら、Loopキーワードでループを終了し、最後にEnd Subキーワードでサブルーチンを終了する。
  • コードを実行するコードの準備ができたので、F5キーまたは上部メニューバーの緑の再生ボタンを押すだけでコードが実行されます。

最終的には、A列の中に2~20までの数字のリストが表示されます。

ループの条件としてあらかじめ入力されたカラムを使う

さて、基本的な構造を構築するための構文やニュアンスを理解したところで、あらかじめ用意された基準に基づいて同様の数字を出力する別のコードを書いてみてはどうだろうか。たとえば、A列から手がかりを選び、B列に出力を出力するループ条件を作成することができます。

ループは、列A'の事前入力されたセルの合計カウントを基準に実行されます。開始行の値は1(a =1)なので、終了値は動的であり、do-whileループによって自動計算されます。

VBA code to run a do-while loop in Excel

行の値を使って、A列の各セルをループし、その数値に2を掛けたものがB列に出力されます。

Excel sheet interface with two columns of data

A列に10個以上の値がある場合、ループは1列目の空白の値に出会うまで実行されます。同様に、do-whileループの中にさらに複雑な条件を書き、必要に応じて条件をチェックし、出力を表示するために使用することができます。

Do-Whileループ内でIFステートメントを使用する。

入れ子ループのように、Do-Whileループの中でIF文を使用すると、条件をもう1層追加することができます。この場合、Do-Whileループは条件がFalseになるまでループ全体を実行し、内側のIF文はループが実行されるたびに実行される。

下の例では、do-whileループがA列の各セルを空白のセルに出会うまで循環させます。その後、IF文がA列の各セルの値をチェックし、B列に出力を出力します。外側のループがA列の空白セルに遭遇するとすぐにループは停止し、サブルーチンを終了させます。

VBA code using an IF condition within a do-while loop

出力は以下の通りです:

Excel sheet interface with two rows of output data

A列の値が5未満である場合、B列の値は5となる。A6では、セルの値が5より大きいので、結果の出力は7となり、IF条件と同期しているthat's。

VBAの多面的な機能を解き明かす

ExcelとVBAの組み合わせは、高度なデータ分析を行う上で非常に有効な組み合わせです。VBAを使わなくても、Excelのさまざまな論理関数を使って複雑な作業を行うことができ、プログラミングのスキルを証明することができます。

データ分析に興味があり、普段からExcelを使用している方は、Excelの多面的な論理関数を使用することで、非常に大きなメリットを得ることができます。

Scroll to Top