よく目にするアカウント登録フォームを題材にして、VBAで実現できることを体験すると共に、基本的な記述方法について学んでいきましょう。
※Excelファイルダウンロード
登録フォーム
ご使用は自己責任で宜しくお願い致します。
それほど複雑なフォーマットではないので、不安な方はご自身で作成してください。
icon-hand-o-right 前回の演習解説
前回最後に出題した演習の解答例です。
Sub practice1()
Dim fname As String
Dim lname As String
Dim mf As String
lname = Range("D3").Value
fname = Range("G3").Value
mf = Range("D6").Value
MsgBox "氏名:" & lname & " " & fname & " 性別:" & mf
End Sub
ちょっと見づらいので、氏名と性別の間に改行を加えたいと思います。改行を行うには、 vbCrLf を使用します。
Sub practice1()
Dim fname As String
Dim lname As String
Dim mf As String
lname = Range("D3").Value
fname = Range("G3").Value
mf = Range("D6").Value
MsgBox "氏名:" & lname & " " & fname & vbCrLf & "性別:" & mf
End Sub
vbCrLf は改行コードを表しています。変更した結果は下の通りです。

こちらの方が見栄えは良いかと思います。
icon-hand-o-right 氏名が入力されていない場合の処理を実装しよう!
■ 問題
姓・名のどちらか一方でも入力されていない場合、「氏名を正しく入力してください。」とアラートを表示するようにマクロを作成しましょう。

※その他の項目に関しては、今回は使用しません。
解答はこちら
まずは解答例を見てみましょう。
解答例①
Sub pracitice2_1()
Dim fname As String
Dim lname As String
Dim mf As String
Dim errmsg As String
lname = Range("D3").Value
fname = Range("G3").Value
mf = Range("D6").Value
If lname = "" Or fname = "" Then
errmsg = MsgBox("氏名を正しく入力してください。", vbOKOnly + vbExclamation)
Else
MsgBox "氏名:" & lname & " " & fname & vbCrLf & "性別:" & mf
End If
End Sub
解答例②
Sub practice2_2()
Dim fname As String
Dim lname As String
Dim mf As String
Dim errmsg As String
lname = Range("D3").Value
fname = Range("G3").Value
mf = Range("D6").Value
If lname = "" Or fname = "" Then
errmsg = MsgBox("氏名を正しく入力してください。", vbOKOnly + vbExclamation)
Exit Sub
End If
MsgBox "氏名:" & lname & " " & fname & vbCrLf & "性別:" & mf
End Sub
解答例①は、シンプルに条件の真偽によって表示するメッセージボックスを変更する、という実装方法です。「空白であるか」という条件判定には、「 = “”」という書き方が使えます。から文字列と比較して一致しているかを判定するということです。もう一点、注意したいのは条件を複数個論理結合する記述方法です。今回作成するマクロは姓・名のどちらかでも空欄だった場合、アラート表示するので、 Or を使用して結合します。「A、もしくはB」の場合、真になります。また、メッセージボックス出力の記述方法が前回と変わりましたが、これは vbExclamation を使ってメッセージボックス内のアイコンを変更したかったからです。
解答例②は、Exitステートメントを使用した実装方法です。Exit Subという命令が実行されると、End Subまでそれ以下の処理をスキップします。
■ 演習
姓・名が入力されていない場合、下図のように「※入力されていません」と赤字で出力するマクロを作成しましょう。

この演習の解答例はこちら >>