2017-01-08 11 views
0
Sub sumtotal_of_month() 
Dim a As Integer 
a = 0 

For i = 2 To 365 
    If (Sheets("Sheet1").Range("F" & i).Value = 1 And Sheets("Sheet1").Range("D" & i).Value <> "") Then 
    a = a + Sheets("Sheet1").Range("D" & i).Value 
End If 
Next i 
MsgBox (a) 
End Sub 

上記のコードは正常に動作しますが、私は、パラメータでを「1」を代用しようとすると、それは任意の出力を提供していません。私は初心者なので、このコードは非常にアマチュアです。私が使用してエクセル2007エラーながら

Sub sumtotal_of_month(month As Integer) 
Dim a As Integer 
a = 0 

For i = 2 To 365 
    If (Sheets("Sheet1").Range("F" & i).Value = month And Sheets("Sheet1").Range("D" & i).Value <> "") Then 
    a = a + Sheets("Sheet1").Range("D" & i).Value 
End If 
Next i 
MsgBox (a) 
End Sub 
+0

を多分あなたは渡していません有効な 'month'値:呼び出し文とそれが渡されるパラメータの値を確認してください – user3598756

+0

デバッグを使用して、月パラメータの値がプロシージャに渡される前に確認してください。渡された値が整数型であることを確認してください。 –

+0

「repetit juvant」 –

答えて

0

あなたは次のように、あなたのサブを簡素化することができ、あなたのサブにmonthパラメータとして渡している値かどうか確認する必要があるとします。

Sub sumtotal_of_month(month As Integer) 
    Dim a As Double 

    With Worksheets("Sheet1") 
     a = WorksheetFunction.SumIf(.Range("F2:F365"), month, .Range("D2:D365")) 
    End With 
    MsgBox a 
End Sub 
+0

お返事ありがとうございます。あなたのコードは正常に動作しますが、MsgBoxはポップアップしません。 –

+1

@AshwithUllalこのコードは、メッセージボックスがポップアップされずに「うまく動作する」ことはできません。したがって、コードがまったく実行されていないか、エラーを投げているかのどちらかです。 On Error Resume Next'と表示されます。ヘルプが必要な場合は、呼び出しコードを表示する必要があります。 –