VBAマクロで関数とif文を組み合わせよう
はじめに
実装方法によっては条件によって関数を使い分けてSub文の可視性を高めることができます。
条件によって関数を使い分けることができれば修正が必要になった際も簡単になるのでぜひ使いこなしてください。
1章 VBAマクロで関数とif文を組み合わせるとどんないいことがあるのか
VBAマクロで「関数」と「If文」を組み合わせると、マクロの柔軟性と応用力が大きく高まります。関数は「ある入力を受け取り、結果を返す仕組み」であり、If文は「条件によって処理を分ける仕組み」です。この二つを組み合わせることで、ただ計算するだけでなく、状況に応じて異なる結果を返せる関数を自分で作れるようになります。
まず、関数を単独で使うと、常に決まった処理を実行して答えを返します。しかしIf文を組み込むことで、入力された内容や条件によって結果を変えることが可能になります。これにより、より柔軟に「判断を含んだ処理」ができるようになります。
また、この組み合わせを使えば、マクロのコードを整理しやすくなります。複雑な条件分岐をそのまま書くと見づらくなりますが、関数としてまとめれば、呼び出し部分はシンプルな形になり、処理の意味もわかりやすくなります。その結果、保守性が高まり、修正や追加にも対応しやすくなります。
さらに、関数にIf文を組み込むことで「結果の自動的な判定」を行えるようになります。これにより、人がいちいち確認して判断する作業を減らし、マクロに任せられる範囲を広げられます。つまり、関数は「処理をまとめる道具」、If文は「状況を見て判断する道具」であり、この二つを組み合わせることで、単純な計算から一歩進んだ“賢い自動化”が実現できるのです。
初心者にとっても、この考え方を理解することで、マクロをより実用的に活用できるようになります。
2章 実際に組み合わせてみよう
今回は小学校の先生になった気分で、テストの点数によって3段階評価をつけるマクロを関数を用いて実装しようと思います。
下の画像で下記条件で実装したいと思います。

33点未満→頑張りましょう
33点以上66点未満→できる
67点以上→よくできる
実際に実装すると下記のようになります。
Sub ボタン1_Click()
' 岡田さん
Cells(2, "E").Value = Score(Cells(2, 2).Value)
Cells(2, "F").Value = Score(Cells(2, 3).Value)
Cells(2, "G").Value = Score(Cells(2, 4).Value)
' 岡本さん
Cells(3, "E").Value = Score(Cells(3, 2).Value)
Cells(3, "F").Value = Score(Cells(3, 3).Value)
Cells(3, "G").Value = Score(Cells(3, 4).Value)
' 岡山さん
Cells(4, "E").Value = Score(Cells(4, 2).Value)
Cells(4, "F").Value = Score(Cells(4, 3).Value)
Cells(4, "G").Value = Score(Cells(4, 4).Value)
End Sub
'ByVal ○○で引数を指定
'Function 〇〇 as 型で戻り値を指定
Function Score(ByVal num As Integer) As String
Dim text As String
If num < 33 Then
text = " 頑張りましょう"
ElseIf num < 66 Then
text = " できる"
Else:
text = " よくできる"
End If
'関数名 = 変数 で値をreturnできる
Score = text
End Function
これを実行すると下記のようになります。

さいごに
ここではif文と関数を組み合わせることができました。
関数を作成しないと毎回条件分岐を構築しないといけないのでめんどくさいですね・・・。
ぜひ使いこなしてください。
株式会社ONE WEDGE
【Serverlessで世の中をもっと楽しく】
ONE WEDGEはServerlessシステム開発を中核技術としてWeb系システム開発、AWS/GCPを利用した業務システム・サービス開発、PWAを用いたモバイル開発、Alexaスキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
Discussion