54本目 シートのChangeイベント

VBA100本ノック

VBA100本ノック 54本目を動画で解説しています。Excelの神髄さんの模範解答はコチラ


問題

#VBA100本ノック54本目
イベントを使い、商品コードを入れたら「マスタ」から取得した商品名と単価が直ちに表示されるようにしてください。
商品コードがマスタに存在しない場合は商品コードを赤字にしてください。
※金額はセルに計算式が入っています。
※商品コード列の既定の文字色は「自動」

解答

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Column <> 2 Then Exit Sub
    
    Dim wsマスタ As Worksheet
    Set wsマスタ = Sheets("マスタ")
    
    On Error Resume Next
    Dim sName As String, sTanka As String
    sName = WorksheetFunction.VLookup(Target, wsマスタ.Range("A:C"), 2, 0)
    sTanka = WorksheetFunction.VLookup(Target, wsマスタ.Range("A:C"), 3, 0)
    If Err.Number <> 0 Then
        Target.Font.Color = vbRed
        Target.Offset(, 1) = ""
        Target.Offset(, 3) = ""
    Else
        Target.Offset(, 1) = sName
        Target.Offset(, 3) = sTanka
    End If
    
    Application.EnableEvents = True
End Sub
新人君
新人君

初のイベントマクロ!!
楽しみですね!

ブチョ
ブチョ

今度の乃木坂のイベントも
楽しみだ!

新人君
新人君

それ、イベント違い…

コメント

タイトルとURLをコピーしました