dポイントプレゼントキャンペーン実施中!

オートフィルタ後に35列(整数)、38列(小数)の集計を行ったところ、38列にて"実行時エラー'1004'が発生します。
For Each cel ~ next文に誤りがあると思われます。ご教授ねがいます。

Dim 合計金額 As Currency
Dim 合計容量 As Single
'
合計金額 = 0
合計容量 = 0
'
' 該当日付選択
選択日付 = InputBox("該当日付を入力してください。例:2008/09/01")
' 該当日付と作成年月日(Fielsd:37)をマッチング
With Worksheets("明細")
.Range("a1").AutoFilter Field:=37, Criteria1:=選択日付
Selection.Offset(1).Resize(Selection.Rows.Count - 1).Select
'
Selection.Columns(35).SpecialCells(xlVisible).Select
For Each cel In Selection
合計金額 = 合計金額 + cel.Value
Next
'
Selection.Columns(38).SpecialCells(xlVisible).Select
For Each cel In Selection
合計容量 = 合計容量 + cel.Value
Next
End With

A 回答 (3件)

 


>Selection.Offset(1).Resize(Selection.Rows.Count - 1).Select
>■Selection.Columns(35).SpecialCells(xlVisible).Select
>●Selection.Columns(38).SpecialCells(xlVisible).Select

●のSelectionは、■でSelectした範囲のことではありませんか?
 
selectの必要性は感じませんが、Selectionを使いたければ。。

'----------------------------------------
For Each cel In Selection.Columns(35).SpecialCells(xlVisible)
合計金額 = 合計金額 + cel.Value
Next
'
For Each cel In Selection.Columns(38).SpecialCells(xlVisible)
合計容量 = 合計容量 + cel.Value
Next
'-----------------------------------------
 
でどうでしょうか。
 

この回答への補足

ありがとうございます。無事、集計できました!!

>selectの必要性は感じませんが・・
との事ですが、35列・38列それぞれを計算するためにselectを使用したのですが、使用目的が違うのでしょうか?
もし、よろしければselect以外の方法をお教えください。

補足日時:2009/06/01 13:23
    • good
    • 0

>最終を『AI10000』で固定してよいのでしょうか?



構わないはずですよ。
不都合があるなら、どこかで最大行を取得して変数で設定してもかまいませんし。

Range("AI2:AI" & MaxRow )

http://www.niji.or.jp/home/toru/notes/8.html
    • good
    • 0
この回答へのお礼

ありがとうございます。すっきりしましたヽ(´▽`)/
勉強になりました。

お礼日時:2009/06/01 15:55

subtotal関数で集計できますよ。



合計金額=Application.WorksheetFunction.Subtotal(9, Range("AI2:AI10000"))


http://exinfo.biz/func/func_subtotal.shtml
http://blog.livedoor.jp/sjkondou/archives/512742 …

この回答への補足

ありがとうございます。

行数範囲が不特定な場合、
subtotal関数範囲設定で、最終を『AI10000』で固定してよいのでしょうか?

補足日時:2009/06/01 14:00
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!