Tips

VBA実践演習問題 #その3

VBA実践演習問題 #その3

 

よく目にするアカウント登録フォームを題材にして、VBAで実現できることを体験すると共に、基本的な記述方法について学んでいきましょう。

※Excelファイルダウンロード
登録フォーム

ご使用は自己責任で宜しくお願い致します。
それほど複雑なフォーマットではないので、不安な方はご自身で作成してください。

 icon-hand-o-right 前回の演習解説

前回最後に出題した演習の解答例です。


Sub practice2_2()

    Dim fname As String
    Dim lname As String
    Dim mf As String
    
    lname = Range("D3").Value
    fname = Range("G3").Value
    mf = Range("D6").Value
    
    Range("B1").Value = ""
    
    If lname = "" Or fname = "" Then
        Range("B1").Value = "※入力されていません"
        Range("B1").Font.Color = vbRed
        Exit Sub
    End If
    
    MsgBox "氏名:" & lname & " " & fname & vbCrLf & "性別:" & mf
End Sub

「Range(“B1”).Value = “”」という記述は、エラー文言が出てから正常に入力が行われることを考慮しています。これがないと「※入力されていません」という文言が出続けることになります。後は、前回の問題のメッセージボックスを出力するという処理を指定したセルに文言を出力し、赤字にするという処理に置き換えるだけです。

 icon-hand-o-right 2回入力されるパスワードが一致しているかチェックしよう!

■ 問題

パスワードとパスワード(再入力)に入力された値が異なる場合、下図のように「※パスワードが一致しません」と出力するようにマクロを修正しましょう。(氏名のロジックは残したまま)

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

解答はこちら

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

解答例

[java]

Sub practice3_1()

Dim fname As String
Dim lname As String
Dim mf As String
Dim pass As String
Dim repass As String
Dim chkerr As Boolean

lname = Range("D3").Value
fname = Range("G3").Value
mf = Range("D6").Value
pass = Range("D9").Value
repass = Range("D12").Value

Range("B1").Value = ""
Range("B7").Value = ""

If lname = "" Or fname = "" Then
Range("B1").Value = "※入力されていません"
Range("B1").Font.Color = vbRed
chkerr = True
End If

If pass <> repass Then
Range("B7").Value = "※パスワードが一致しません"
Range("B7").Font.Color = vbRed
chkerr = True
End If

If chkerr = True Then
Exit Sub
End If

MsgBox "氏名:" & lname & " " & fname & vbCrLf & "性別:" & mf
End Sub

[/java]

パスワードも氏名と同様、それぞれを変数に格納しています。条件は、一致しない場合と記述したいので比較演算子「<>」を使用しています。not equalはVBAではこのように記述します。
前回のコードと変わった点として、Exitステートメントが単体で記述されていることが挙げられます。新たにchkerrというBoolean型の変数を用意し、入力チェックにひとつでも引っかかった場合にはメッセージボックスを出力する処理を行わずに終了します。氏名の入力チェックや、パスワードの入力チェックを行っているIfステートメントに直接Exitステートメントを使用してしまうと、入力・未入力のパターンによってはメッセージボックスが出力されてしまいます。

■ 演習

パスワードの項目が入力されていない場合に、「※入力されていません」と出力するようにマクロを修正しましょう。(優先度は入力されていません > パスワードが一致しません)

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

 

excel_VBAを学んで業務効率化!

excel-vba入門 連載

Recent News

Recent Tips

Tag Search