Tips

VBA実践演習問題 #その2

VBA実践演習問題 #その2

 

よく目にするアカウント登録フォームを題材にして、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 氏名が入力されていない場合の処理を実装しよう!

■ 問題

姓・名のどちらか一方でも入力されていない場合、「氏名を正しく入力してください。」とアラートを表示するようにマクロを作成しましょう。

※その他の項目に関しては、今回は使用しません。

解答はこちら

まずは解答例を見てみましょう。

解答例①

[java]

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

[/java]

解答例②

[java]

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

[/java]

解答例①は、シンプルに条件の真偽によって表示するメッセージボックスを変更する、という実装方法です。「空白であるか」という条件判定には、「 = “”」という書き方が使えます。から文字列と比較して一致しているかを判定するということです。もう一点、注意したいのは条件を複数個論理結合する記述方法です。今回作成するマクロは姓・名のどちらかでも空欄だった場合、アラート表示するので、 Or を使用して結合します。「A、もしくはB」の場合、真になります。また、メッセージボックス出力の記述方法が前回と変わりましたが、これは vbExclamation を使ってメッセージボックス内のアイコンを変更したかったからです。

解答例②は、Exitステートメントを使用した実装方法です。Exit Subという命令が実行されると、End Subまでそれ以下の処理をスキップします。

■ 演習

姓・名が入力されていない場合、下図のように「※入力されていません」と赤字で出力するマクロを作成しましょう。

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

 

excel_VBAを学んで業務効率化!

excel-vba入門 連載

Recent News

Recent Tips

Tag Search