2011年9月13日火曜日

Excel VBA課題(3)

20110912のファイルをベースとして,想定されるエラーに対する処理(5箇所)を追加する.
例) 商品ID(会員ID)が空欄の場合,商品ID(会員ID)の入力を促すメッセージを表示し,処理を中断する.

sample code
Sub point()
    '1.ワークシート「入力」に入力された文字列を取得(エラー処理あり)
    Dim errorFlag As Integer
    errorFlag = 0
    
    Dim syouhin As Integer
    If IsNumeric(Worksheets("入力").Range("B1").Text) Then
        syouhin = Worksheets("入力").Range("B1").Value
    ElseIf Worksheets("入力").Range("B1").Text = "" Then
        MsgBox "商品IDが空欄です.商品IDを入力してください."
        errorFlag = 1
    Else
        MsgBox "正しい商品IDを入力してください."
        errorFlag = 1
    End If
    
    Dim kaiin As Integer
    If IsNumeric(Worksheets("入力").Range("B2").Text) Then
        kaiin = Worksheets("入力").Range("B2").Value
    ElseIf Worksheets("入力").Range("B2").Text = "" Then
        MsgBox "会員IDが空欄です.会員IDを入力してください."
        errorFlag = 1
    Else
        MsgBox "正しい会員IDを入力してください"
        errorFlag = 1
    End If
    
    If errorFlag = 0 Then
        '2.取得した「商品ID」から「価格」と「ポイント付与率」を取得
        Dim kakaku As Long
        Dim fuyoritsu As Integer
        
        Worksheets("商品").Select
        Worksheets("商品").Range("A2").Select
        
        Do While ActiveCell.Value <> ""
            If ActiveCell.Value = syouhin Then
                kakaku = ActiveCell.Offset(0, 2).Value
                fuyoritsu = ActiveCell.Offset(0, 3).Value
            End If
            'MsgBox "価格:" & kakaku & "、ポイント付与率" & fuyoritsu
            ActiveCell.Offset(1, 0).Select
        Loop
        
        '3.取得した「会員ID」から「保有ポイント数」と「会員種別」を取得
        Dim point As Long
        Dim syubetsu As Variant
        
        Worksheets("会員").Select
        Worksheets("会員").Range("A2").Select
        
        Do While ActiveCell.Value <> ""
            If ActiveCell.Value = kaiin Then
                point = ActiveCell.Offset(0, 2).Value
                syubetsu = ActiveCell.Offset(0, 3).Value
            End If
            ActiveCell.Offset(1, 0).Select
        Loop
        
        '4.取得した「価格」と「保有ポイント数」から「支払金額」を表示
        Dim kingaku As Long
        Worksheets("入力").Select
        kingaku = kakaku - point
        Worksheets("入力").Range("B4").Value = kingaku
        
        Worksheets("入力").Range("B6").Value = kakaku
        If syubetsu = "ゴールド" Then
            fuyoritsu = fuyoritsu * 2
        End If
        Worksheets("入力").Range("B7").Value = kakaku * fuyoritsu / 100
    End If
End Sub

download

0 件のコメント: