Excel VBA(Visual Basic for Applications)を使うと、Excelシートの操作やデータの処理を自動化することができます。
VBAを使えば、手作業で行うのに時間のかかる作業を自動化できるため、生産性を向上させることができます。
この記事では、Excel VBAの基本的な概念のうち、If…Then…Else ステートメントについて解説し、実際にサンプルコードを紹介します。
If…Then…Else ステートメントとは?
If…Then…Else ステートメントは、Excel VBAの条件分岐において最も基本的な構造の一つです。
このステートメントは、「もしAであればBを実行し、そうでなければCを実行する」というような、プログラムの分岐を制御するために使用されます。
具体的には、以下のような構文を持ちます。
1 2 3 4 5 |
If 条件式 Then 処理1 Else 処理2 End If |
上記の構文では、条件式がTrueの場合は処理1が実行されます。一方、条件式がFalseの場合は処理2が実行されます。
また、Else節は必須ではありません。以下のような構文も可能です。
1 2 3 |
If 条件式 Then 処理1 End If |
上記の構文では、条件式がTrueの場合にのみ処理1が実行されます。
If…Then…Else ステートメントの使い方
If…Then…Else ステートメントは、Excel VBAで非常に頻繁に使われます。具体的には、以下のような場面で利用されます。
条件による処理の分岐
もっとも基本的な使い方は、条件によって処理を分岐することです。
例えば、あるセルの値が10未満の場合にはメッセージを表示し、それ以外の場合には何もしない、というようなプログラムを考えてみましょう。
1 2 3 |
If Range("A1").Value < 10 Then MsgBox "A1の値は10未満です" End If |
上記のコードでは、A1セルの値が10未満であれば、メッセージボックスが表示されます。
複数条件による処理の分岐
複数の条件によって処理を分岐することもできます。
例えば、あるセルの値が10未満の場合にはメッセージAを、10以上20未満の場合にはメッセージBを、それ以上の場合にはメッセージCを表示する、というようなプログラムを考えてみましょう。
1 2 3 4 5 6 7 |
If Range("A1").Value < 10 Then MsgBox "A1の値は10未満です" ElseIf Range("A1").Value < 20 Then MsgBox "A1の値は10以上20未満です" Else MsgBox "A1の値は20以上です" End If |
上記のコードでは、A1セルの値によって3つのメッセージのいずれかが表示されます。
論理演算子を使った条件式の組み合わせ
論理演算子を使って、複雑な条件式を組み合わせることもできます。
例えば、あるセルの値が10以上かつ20以下の場合にメッセージAを、それ以外の場合にはメッセージBを表示する、というようなプログラムを考えてみましょう。
1 2 3 4 5 |
If Range("A1").Value >= 10 And Range("A1").Value <= 20 Then MsgBox "A1の値は10以上20以下です" Else MsgBox "A1の値は10未満または20より大きいです" End If |
上記のコードでは、A1セルの値によって2つのメッセージのいずれかが表示されます。
実務的なサンプルコード
以上のような基本的な使い方の他に、実際の業務でよく使われるようなサンプルコードも紹介します。
データのフィルタリング
データのフィルタリングは、Excelの基本的な機能の一つですが、VBAを使って自動化することもできます。
以下のコードは、A列の値が”Red”の行をフィルタリングする例です。
1 |
ActiveSheet.Range("$A$1:$C$10").AutoFilter Field:=1, Criteria1:="Red" |
上記のコードでは、ActiveSheetのA1からC10までのセル範囲をフィルタリングし、A列の値が”Red”の行だけが表示されます。
シートのコピー
シートのコピーも、VBAを使えば自動化することができます。以下のコードは、Sheet1をSheet2にコピーする例です。
1 2 |
Sheets("Sheet1").Copy After:=Sheets("Sheet1") ActiveSheet.Name = "Sheet2" |
上記のコードでは、Sheet1をSheet2にコピーし、新しく作成されたシートの名前を”Sheet2″に変更しています。
セルの色の変更
セルの色を変更することも、VBAを使えば自動化することができます。以下のコードは、A1セルの背景色を赤色に変更する例です。
1 |
Range("A1").Interior.Color = RGB(255, 0, 0) |
上記のコードでは、A1セルのInteriorオブジェクトのColorプロパティを、RGB(255, 0, 0)という赤色に設定しています。
ファイルの保存
Excelファイルの保存も、VBAを使えば自動化することができます。以下のコードは、現在のブックを”Sample.xlsx”という名前で保存する例です。
1 |
ActiveWorkbook.SaveAs Filename:="Sample.xlsx", FileFormat:=xlOpenXMLWorkbook |
上記のコードでは、ActiveWorkbookをxlOpenXMLWorkbook形式で、”Sample.xlsx”というファイル名で保存しています。
オブジェクトの作成と操作
VBAでは、オブジェクトの作成と操作もできます。
以下のコードは、新しいシートを作成し、A1セルに”Hello, World!”という文字列を入力する例です。
1 2 3 |
Dim newSheet As Worksheet Set newSheet = ThisWorkbook.Sheets.Add newSheet.Range("A1").Value = "Hello, World!" |
上記のコードでは、新しいワークシートオブジェクトを作成し、ThisWorkbookのSheetsコレクションに追加しています。
そして、新しいシートのA1セルに”Hello, World!”という文字列を入力しています。
まとめ
Excel VBAIf…Then…Elseステートメントについて、基礎から応用、実務的なサンプルコードまで解説しました。
VBAを使えば、Excelの基本的な機能だけでなく、自動化やオブジェクトの操作など、様々なことができます。是非、Excel VBAを使って業務の効率化に取り組んでみてください。
コメント