人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ExcelVBAです。

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

A列 B列 C列
商品 色 数

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

宜しくお願い致します。

●質問者: hananeko_0
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:数字 計数
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● Mook
●60ポイント ベストアンサー

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

◎質問者からの返答

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

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

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

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


2 ● slapshock
●10ポイント

下記で出来ます。


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


3 ● haruo-31
●10ポイント

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ