BMaxRow = 0 or Nothing ←こういったものが必要?
集計結果の最下部から1セル空けた後に合計値を算出(for-next構文)、
その左に"合計"という見出しを付ける一連の作業を組みました。
再度実行すると、集計表下部と合計値セルの間に+2行ずつ、数字がはいり
合計値と合計見出しが入力されるセルが、+2行ずつ下に降りていきます。
BMaxRowの値が増えていっているためだと思われます。
再集計の際、シート全体をクリアにしているのですが、
BMaxRowは値を引き継ぎ、実行の度に増幅していくのでしょうか?
対策というかこうならない方法を教えてください。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
B←集計シート
Dim BMaxRow As Long
Dim 合計値 As Single
BMaxRow = B.Cells(Rows.Count, 1).End(xlUp).Row 'Bの1列目の最終行番号
'一旦集計シートの中身をクリアする
B.Cells.ClearContents
'集計表の集計
省略
'集計列の最下部に合計値を算出する
For i = 2 To BMaxRow
合計値 = 合計値 + B.Cells(i, 2)
Next i
B.Cells(BMaxRow + 2, 2) = 合計値 ←for-nextの最終結果を入れる
B.Cells(BMaxRow + 2, 1) = "合計" ←合計値の入ったセルの左隣に"合計"見出し作成
普通は
BMaxRow = 0
でいいです。
これは恐らく変数のリセット云々の問題ではありません。
「合計値の入ったセルの左隣に"合計"見出し作成 」とありますが
これによって、左端列においてデータが記入された最終行が2つ下がる
(「一行空けて記入」→「2行増える」)はずで、その状態で
BMaxRowを計算させているために、毎回2ずつ増えるのだと思います。
エラーになるのは別の原因。
具体的な問題点としては、BMaxRowの値を取得しているタイミングがおかしい。
2012/09/06 16:49:07合計行が表示されているとき、「集計シートの中身をクリアする前」にBMaxRowの値を取得すれば、合計行も含めたシート内容から最終行番号が取得される。
なるほどですね。
2012/09/06 17:02:46新たにdictionaryが作成された後に、BMaxRowの値を取得するべきですね。
そのように書き換えて上手くいきました。
ありがとうございます!!