VBAのIFステートメントとは?
Excel上でVBAマクロを作成する際、IFステートメントはプログラムの実行中に、条件に基づいて処理を分岐させるための重要な機能です。IFステートメントでは、ある条件が真(True)か偽(False)かによって、実行する処理を切り替えることができます。
IFステートメントはExcelのマクロを作成する上で、非常に頻繁に利用される構文ですので、VBAを使うなら最初にマスターしておきましょう。また、『And』や『Or』などの論理演算子を使って複雑な条件を作成する方法や、『ElseIf』による複数条件の分岐も学ぶと理解が深まります。
この記事では、VBAのIFステートメントを中心に、VBAで条件分岐を実現するIF文の基本構造と使い方、効果的に使うためのポイントを紹介していきます。
【参考】:If...Then...Else ステートメントを使用する (VBA) | Microsoft Learn
そもそもVBAとは
VBA(Visual Basic for Applications)は、ExcelなどのMicrosoft Officeアプリケーションで使用できるプログラミング言語です。VBAを使用することで、データ処理の自動化や複雑な操作を効率的に行えます。
VBAはVB(Visual Basic) と呼ばれるWindows環境に特化したプログラミング言語がベースになっており、そこから派生してMicrosoft Officeに搭載されたものです。
VBとVBAの違い
VB(Visual Basic)とVBA(Visual Basic for Applications)は、どちらもマイクロソフトが開発したプログラミング言語で、文法は非常に似ています。しかし、その目的や実行環境に大きな違いがあります。違いを中心に、それぞれの特徴を見てみましょう。
■ VB(Visual Basic) VBは、WindowsアプリケーションやWebアプリケーションの開発など、スタンドアロンで動作するプログラムを作成できます。開発環境としては、Visual Studioのような専用の開発環境が必要となります。またVBは、GUIの作成、データベースアクセス、ネットワーク通信など、様々な機能を備えています。
【参考】:Visual Basic - はじめに| Microsoft
■ VBA(Visual Basic for Applications) VBAはExcel、Word、AccessなどのMicrosoft Office製品に組み込まれたプログラミング言語で、これらのアプリケーションを自動化するために使用されます。特別な開発環境を必要とせず、Officeアプリケーションの中で開発が行えます。
プログラミングは主にマクロの記録機能やVBE(Visual Basic Editor)を使って行います。また機能としては、Officeアプリケーションの機能を拡張する範囲が中心です。
【参考】:Office VBA の基礎知識 | Microsoft Learn
VBAのコーディングと実行手順
VBAでコードを作成する際の基本的な流れを確認しましょう。ここでは、ExcelにおけるVBAのコーディング例を交えて、VBAプログラム(マクロ)の実行までを解説します。
手順1:開発タブを表示する
Excelの「ファイル」メニューから「オプション」を開き、「リボンのユーザー設定」から「開発」タブにチェックを入れます。これで、メニューにデフォルトで「開発タブ」が表示され、VBAに関する操作が行えるようになります。
手順2:VBE(Visual Basic Editor)を開く
VBAのコード入力、実行の環境が整ったら、VBAに関わる操作が可能になります。最初に①「開発」タブをクリックしたら、続いて表示された②「Visual Basic」をクリックして、③VBAコードを記述するためのVBE(Visual Basic Editor)を開きます。
手順3:モジュールを挿入する
「挿入」メニューから「標準モジュール」を選択し、コードを書くための新しいモジュールを追加します。ボックスの右側にコードを入力するための新たなモジュールが表示されます。
手順4:コードを書く
モジュール内に今回の主題である、IFステートメントやマクロのコードを入力します。
ここでは「A1セルの値が10より大きいか否かを比較し、入力された数字に合致したメッセージを表示する」マクロを入力します。
Sub If文の例()
If Range("A1").Value > 10 Then
MsgBox "A1の値は10より大きいです"
Else
MsgBox "A1の値は10以下です"
End If
End Sub
手順5:コードを実行する
VBAモジュールにコードを入力したら、メニューから『実行』を選び、リストから実行したいSubプロシージャをクリックします。
手順6:コードの実行結果を確認する
Excelの画面上で、VBAモジュールを実行した結果、次のメッセージボックスが表示されました。A1セルには12を入力しましたので、「A1の値は10より大きいです」という正しい結果が表示されました。
IFステートメントについて
VBAの利用手順について、実際にIFステートメントを用いながら解説しました。ここでVBAでは最もよく利用する、IFステートメントについて、もう少し詳しく掘り下げてみましょう。
条件によって処理を分岐させる仕組み
IFステートメントは、特定の条件に基づいて処理の流れを変えるためのものです。例えば、セルの値が一定の基準を超えていれば特定の操作を実行する、といった場面で使われます。プログラミングにおける条件分岐は柔軟な自動化を可能にするために重要です。
VBAでのIFステートメントの書き方
VBAのIFステートメントは、様々な条件に応じて処理を分岐させるために非常に重要な構文です。まずは基本的な構文を確認しておきましょう。
■ 基本的な構文 VBAにおけるIFステートメントの基本的な構文は次の通りです。
If 条件式 Then
' 条件が真の場合に行う処理
Else
' 条件が偽の場合に行う処理
End If
If: 条件式の始まりを示します Then:条件が真の場合に実行する処理の開始を示します Else:条件が偽の場合に実行する処理の開始を示します End If: Ifブロックの終わりを示します
【コード例】
If Range("A1").Value > 60 Then
MsgBox "合格点です"
Else
MsgBox "不合格点です"
End If
このコードでは、セルA1の値が60より大きいかどうかを判定し、条件によって異なるメッセージを表示します。
■ 複数の条件を判定する ElseIf:複数の条件を判定したい場合に利用します。
【コード例】
Sub 評価チェック()
Dim score As Integer
score = Range("A1").Value
If score >= 90 Then
MsgBox "優"
ElseIf score >= 80 Then
MsgBox "良"
ElseIf score >= 70 Then
MsgBox "可"
Else
MsgBox "不可"
End If
End Sub
このコードではセルA1のscoreの値に応じて、 "優" 、 "良" 、 "可" 、 "不可" のいずれかのメッセージを表示します。「Dim score As Integer」で、セルA1の値を格納するための整数型変数scoreを宣言しています。
「score = Range("A1").Value」により、セルA1の値をscore変数に代入しています。実際にコードを書いて実行させてみましょう。
実行結果を見てみましょう。正しく結果が表示されています。セルA1に様々な点数を入力して、検証してみましょう。
■ 1行で書く 処理を1行で書きたい場合には、次のように簡潔に書くことができます。
「If 条件式 Then 処理」
【コード例】
If Range("A1").Value > 10 Then MsgBox "A1の値は10より大きいです"
条件式
VBAのIFステートメントにおいて、条件式とは、ある条件が「真」か「偽」かを判定するための式です。この条件式の評価結果によって、実行される処理が分岐します。条件式で使えるものとしては、比較演算子・論理演算子・算術演算子・関数・セル参照「Range("A1")など」、変数があります。
・比較演算子: =, >, <, >=, <=, <> ・算術演算子:「+」「-」「*」「/」など ・論理演算子:And、Or、Not ・比較対象:値、文字列、セル参照など ・Nested If(入れ子のIf文):If文の中にさらにIf文を入れ子にし、より複雑な条件分岐を実現する手法 ・Select Case:複数の値と比較する場合に便利な構文
※Select Caseは1つの変数に対して複数の値を比較する場合に便利で、例えば成績の評価やカテゴリー分けの処理などに使います。以下はIF文と同様に条件分岐を行うためのSelect Case文の使用例です。
【Select Caseコード例】
Select Case セルの値
Case 10
MsgBox "値は10です"
Case 20
MsgBox "値は20です"
Case Else
MsgBox "それ以外の値です"
End Select
■ 条件式の注意点 複数条件や複数処理など、AndとOrの組み合わせになったり、3つ以上の条件があったり、条件式が複雑になる場合には、次のように括弧で優先順位を明示すると良いでしょう。
【コード例】
If (条件1) And (条件2 Or 条件3) Then
' 条件1と条件2または条件3がTrueの場合の処理
End If
VBAのIFステートメントを利用してExcelを自動化しよう
ここまでExcelの自動化を図る上で役立つ、VBAのIFステートメントについて解説しました。VBA入門者向けにVBAの基本から、IFステートメントの使い方までの一連の流れを理解することで、VBAマクロの活用範囲が一気に広がります。
Select CaseやNested Ifを駆使することで、業務の効率化や自動化に向けた様々なシーンで活用できるでしょう。ぜひVBAのIFステートメントを習得して、業務効率化に役立てましょう。
その他の関連記事
その他に関連する内容は、下記の記事でも紹介しています。ぜひ参考にしてください。
【参考】:Excelの表の作り方!基本から応用まで表の作成方法を図解
【参考】:Excelのマクロとは?初心者向けに概要からできること・作り方を解説
【参考】:Excelを読み取り専用にするには?解除できない場合の対処も解説
【参考】:Excelのプルダウンを作成するには?初心者向けに3ステップで解説
【参考】:Excelのチェックボックスを作るには?新機能と従来機能を解説
【参考】:Excelのセル内改行方法を解説!実務で使える活用テクニック
【参考】:Excelで日付から曜日を算出するには?基本からカスタマイズまで
【参考】:Excelの文字を縦書きにするには?基本操作と表示の調整を図解
【参考】:Excelで重複データを削除するには?確認と削除の仕方を図解
【参考】:Excelで掛け算をマスターしよう!初心者向けにやさしく解説
【参考】:Excelで文字列を結合するには?文字列演算子や関数の使い方
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから