マクロの教科書 Vol.5
はじめに
こんにちは、まさしです。私は普段Excelの専門知識を活かし、SNSで役立つ情報を発信しています。
今回は「マクロの教科書」と題して、マクロの基本的なことを学んでいこうと思います。
マクロを使うことで、作業効率の向上や業務の自動化が可能になり、ビジネスの生産性を飛躍的に高めることができます。ここでは、エクセルマクロを使うことの具体的なベネフィットについてご紹介します。
作業効率の向上: 定型業務を自動化することで、手作業にかかる時間を大幅に削減できます。データ入力や計算の繰り返しを自動化し、人的ミスを防ぐことができます。
精度の向上: 自動化によりヒューマンエラーを減らし、データの精度を向上させます。複雑な計算やデータ処理を正確に実行することができます。
一貫性の確保: マクロを使用することで、複数のファイルやデータセットに対して同一の処理を一貫して適用できます。データのフォーマットや処理手順の標準化が可能です。
時間の節約: マクロを実行するだけで、数時間かかる作業を数分で完了できます。時間を他の重要な業務やクリエイティブな作業に充てることができます。
では、さっそくマクロを学んでいきましょう!
導入部
プログラミングの基礎を学ぶ中で、繰り返し処理は避けて通れない重要な概念です。
特にExcel VBA(Visual Basic for Applications)や他の多くのプログラミング言語において、繰り返し処理はデータを効率的に処理するための強力なツールとなります。
この記事では、その中でも基本的かつ強力な「For Nextステートメント」と「Do While Loopステートメント」について解説します。
これらのステートメントは、一定の回数だけ処理を繰り返すためのループ構造を提供します。この構文を理解することで、繰り返し作業を自動化し、業務の効率化を図ることができます。
例えば、大量のデータを一括で処理したり、複数のセルに同じ操作を適用する際に非常に有用です。
この記事では、以下のポイントについて詳しく解説します。
For Nextステートメントの基本構造
For Nextステートメントの実践例
Do While Loopステートメントの基本構造
Do While Loopステートメントの仲間
この解説を通じて、For Nextステートメント・Do While Loopステートメントの基礎を学び、実務に役立てることができるようになります。それでは、具体的な例を交えながら、For Nextステートメント・Do While Loopステートメントの世界を一緒に探っていきましょう!
For Nextステートメント
基本構造
For Nextステートメントの構造を知る前に、繰り返し処理のイメージを掴んでいただこうと思います。イメージ図を以下に示します。
このような手順で、繰り返し処理を行っています。
余談ですが、繰り返し処理のことを「ループ」と呼ぶこともあります。
では、実際にFor Nextステートメントの基本構造を見ていきましょう。
For Nextステートメントは決まった回数だけ処理を繰り返すのに適しています。
上記の構造の意味としては「変数が初期値から終了値になるまでの間に、処理を繰り返す」というものです。ここでの変数はカウンター変数と呼ばれ、一般的に i や j などが変数名として使われます。
具体例をここからは見ていきたいと思います。
Dim i As Long
For i = 1 To 3
MsgBox i
Next
このマクロを実行することで、メッセージボックスに1~3と繰り返し表示されるようになります。
For Nextステートメントでは指定しない限り「1」ずつ増えていきます。
しかし、あることをすることで「1」ずつ増えていたものが「2」ずつ増やすことができます。
そのあることとは、Step 増分値を追加することです。
実際に構造を見てきましょう。
カウンター変数に、Step 増分値を追加することで、加算させられる数を変更できます!
では、具体例を見ていきます。
Dim i As Long
For i = 1 To 7 Step 3
MsgBox i
Next
このように、増分値を3にしたところ、メッセージボックスには1・4・7と表示されました。ちなみに、注意点としては増分値が終了値を超えた場合はカウントされません。
増分値とありますが、終了値を初期値より小さい値を指定し、マイナスの数を入れることも可能です。
実践例
では、少し応用例を実践していきます。
「範囲A1からA20のセルの中で値が50以上のセルを黄色でハイライトするマクロ」をFor Next ステートメントを使って解いていきます。
Sub HighlightCells()
Dim i As Integer
Dim rng As Range
' 対象範囲を指定
Set rng = Range("A1:A20")
' 範囲内の各セルをチェック
For i = 1 To rng.Rows.Count
If rng.Cells(i, 1).Value >= 50 Then
rng.Cells(i, 1).Interior.Color = RGB(255, 255, 0) ' セルを黄色でハイライト
End If
Next i
End Sub
Sub HighlightCells():
これは新しいマクロ(自動化された一連の操作)を定義しています。このマクロの名前は HighlightCells です。
Dim i As Integer:
これは整数型の変数 i を定義しています。この変数は、後でループカウンターとして使用します。
Dim rng As Range:
これは範囲(Range)オブジェクト型の変数 rng を定義しています。後で、この変数にセルの範囲を設定します。
Set rng = Range("A1:A20"):
これは rng という変数に A1 から A20 までのセル範囲を設定しています。
For i = 1 To rng.Rows.Count:
これはループの開始を示しています。i という変数を1から rng.Rows.Count まで繰り返します。rng.Rows.Count は、設定された範囲内の行数を返します。ここでは20行です。
If rng.Cells(i, 1).Value >= 50 Then:
これは条件文です。rng の範囲内の各セルの値をチェックします。セルの値が50以上の場合に次の行を実行します。
rng.Cells(i, 1).Interior.Color = RGB(255, 255, 0):
これはセルの背景色を設定する行です。セルを黄色(RGB(255, 255, 0))にします。End If:これは If 文を終了します。
Next i:
これは次のループ反復を開始します。ループが終了するまで繰り返します。
End Sub:
これはマクロの終了を示します。
実行した画面がこちらになります。
Do While Loopステートメント
基本構造
For Next ステートメントは決まった回数の処理を繰り返したいときに便利なものになっています。しかし、実際に使うときに決まった回数がハッキリしないときもあります。そんなときは、繰り返しの続行条件を指定したDo While Loopステートメントを活用します。
Do While Loopステートメントの基本構造は以下です。
このように、条件式を入れることで、どこまで繰り返すのかをハッキリさせます。
具体例を見ていきます。
Sub 出欠確認()
Dim i As Integer
i = 2
Do While Cells(i, 1).Value <> ""
Cells(i, 2) = "出"
i = i + 1
Loop
Do While Loopステートメントの仲間
ここではDO While Loopステートメントの仲間について紹介したいと思います。
「DO Until Loopステートメント」は、指定した条件が「True」になるまで、繰り返し処理を実行します。言い換えると、条件が「False」の間はループが続行されます。このループは、繰り返し処理が終了する条件が明確である場合に非常に有効です。
「Do Loop Whileステートメント(条件式が後)」は、ループ内の処理を少なくとも一度は実行し、その後条件を評価して、条件が「True」である限り繰り返し処理を続けます。このループは、繰り返し処理を一度は実行する必要がある場合に有効です。
「Do Loop Untilステートメント(条件式が後)」は、ループ内の処理を少なくとも一度は実行し、その後条件を評価して、条件が「False」である限り繰り返し処理を続けます。このループは、繰り返し処理を一度は実行する必要がある場合に有効です。
おわりに
ここまで読んでいただきありがとうございました。
マクロについて少しでもご理解いただけたでしょうか。ここまで、変数の使い方や条件分岐の方法など、Excelマクロの基本から応用までを学んできました。
マクロの力を活用することで、Excelの操作を大幅に効率化し、作業の自動化を実現できます。
この記事が、あなたの業務効率化の一助となれば幸いです。
今後もさらにマクロのスキルを磨き、Excelを自在に操るプロフェッショナルを目指して頑張ってください!
この記事が気に入ったらサポートをしてみませんか?