ExcelVBAです。


合計した数をMsgboxに表示させる方法を教えてください。

A列 B列 C列
商品 色 数

C2~最終行(毎回最終行は異なる)までの数字の合計を
Msgbox上に「合計数は●●です」としたいのですが・・・

宜しくお願い致します。

回答の条件
  • 1人3回まで
  • 登録:2008/08/13 23:02:57
  • 終了:2008/08/14 23:17:29

ベストアンサー

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912008/08/14 05:07:58

ポイント60pt

本来の 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

http://www.relief.jp/itnote/archives/001834.php

id:hananeko_0

VBA中で関数を利用する形は、とても参考になりました!

他にも色々活用できますねっ (*^_^*) すっごく分かりやすかったですっ

今回も希望通りの結果を得られ、早速職場で活用させていただきます!

Mookさん、いつも助かっていますっ

2008/08/14 23:17:04

その他の回答(2件)

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912008/08/14 05:07:58ここでベストアンサー

ポイント60pt

本来の 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

http://www.relief.jp/itnote/archives/001834.php

id:hananeko_0

VBA中で関数を利用する形は、とても参考になりました!

他にも色々活用できますねっ (*^_^*) すっごく分かりやすかったですっ

今回も希望通りの結果を得られ、早速職場で活用させていただきます!

Mookさん、いつも助かっていますっ

2008/08/14 23:17:04
id:slapshock No.2

slapshock回答回数264ベストアンサー獲得回数152008/08/14 01:23:25

ポイント10pt

下記で出来ます。


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

id:haruo-31 No.3

haruo-31回答回数80ベストアンサー獲得回数102008/08/14 01:15:24

ポイント10pt

本当にそれだけするマクロです。

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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません