合計した数をMsgboxに表示させる方法を教えてください。
A列 B列 C列
商品 色 数
C2~最終行(毎回最終行は異なる)までの数字の合計を
Msgbox上に「合計数は●●です」としたいのですが・・・
宜しくお願い致します。
本来の VB だけの処理でやろうとした場合、途中に数値でないもの
(計算式でのエラー)もあることを考慮すると、下記のようになります。
Sub LoopSum() Dim lastRow As Long Dim lSum As Variant lastRow = Range("C" & Rows.Count).End(xlUp).Row Dim i As Long For i = 2 To lastRow If IsNumeric(Cells(i, "C").Value) Then lSum = lSum + Cells(i, "C").Value End If Next MsgBox "合計数は" & lSum & "です" End Sub
けれど、もともとの EXCEL の SUM 関数は、そのような数値外を除いて合計する
仕様になっているので、それを利用することも可能です。
すべての関数をサポートしているわけではありませんが、VBA 中で EXCEL の関数を
利用する場合、次の形で利用できます。
Application.WorkSheetFunction.関数名
これを利用すると下記のようにも出来ます。
Sub WSFuncSum() Dim lastRow As Long lastRow = Range("C" & Rows.Count).End(xlUp).Row Dim fSum As Variant fSum = Application.WorksheetFunction.Sum(Range("C2:C" & lastRow)) MsgBox "合計数は" & fSum & "です" End Sub
本来の VB だけの処理でやろうとした場合、途中に数値でないもの
(計算式でのエラー)もあることを考慮すると、下記のようになります。
Sub LoopSum() Dim lastRow As Long Dim lSum As Variant lastRow = Range("C" & Rows.Count).End(xlUp).Row Dim i As Long For i = 2 To lastRow If IsNumeric(Cells(i, "C").Value) Then lSum = lSum + Cells(i, "C").Value End If Next MsgBox "合計数は" & lSum & "です" End Sub
けれど、もともとの EXCEL の SUM 関数は、そのような数値外を除いて合計する
仕様になっているので、それを利用することも可能です。
すべての関数をサポートしているわけではありませんが、VBA 中で EXCEL の関数を
利用する場合、次の形で利用できます。
Application.WorkSheetFunction.関数名
これを利用すると下記のようにも出来ます。
Sub WSFuncSum() Dim lastRow As Long lastRow = Range("C" & Rows.Count).End(xlUp).Row Dim fSum As Variant fSum = Application.WorksheetFunction.Sum(Range("C2:C" & lastRow)) MsgBox "合計数は" & fSum & "です" End Sub
VBA中で関数を利用する形は、とても参考になりました!
他にも色々活用できますねっ (*^_^*) すっごく分かりやすかったですっ
今回も希望通りの結果を得られ、早速職場で活用させていただきます!
Mookさん、いつも助かっていますっ
下記で出来ます。
Sub sample()
'最終行の縦位置の取得
Max = Range("C2").End(xlDown).Row
'セルの合計値の算出
result = 0
For i = 2 To Max
result = result + Cells(i, 3)
Next i
'結果の表示
MsgBox result
End Sub
本当にそれだけするマクロです。
sub a()
dim a as range
dim b
dim c as integer
set a = range("B2:B" & range("B2").specialcells(xlcelltypelastcell).row)
c=0
for each b in a
c=c+b.value
next
msgbox "合計は " & c & " です"
end sub
VBA中で関数を利用する形は、とても参考になりました!
他にも色々活用できますねっ (*^_^*) すっごく分かりやすかったですっ
今回も希望通りの結果を得られ、早速職場で活用させていただきます!
Mookさん、いつも助かっていますっ