Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


20660 / 76736 ←次へ | 前へ→

【61489】Re:小計の連続処理
発言  ひつまぶし  - 09/5/13(水) 12:54 -

引用なし
パスワード
   重箱の隅をつつくようですが、ちょっと気になったのでコメントします。
ゆみこんさん提示のSpecialcellsメソッドでの引数の使い方ですが、
このメソッドは、
Function SpecialCells(Type As XlCellType, [Value]) As Range
であり、1番目の引数TypeにはxlCellType列挙型の定数を指定します。
ご提示の案では、xlCellTypeConstants(=2)を指定すべきだと思います。
なお、2番目の引数Valueは、1番目で定数や数式を指定した時に、
さらに細かく指定する場合のものです。
なお、xlTextValues(=2)は本来、当メソッドの2番目の引数用の定数だと思います。
たまたまどちらの定数でも値は同じだったので、
得られる結果は同じになるでしょうが、ちょっと不自然に感じたので意見させてもらいました。

ついでに、私もAutoFilterを使った例を書いときます。
Sub tot()
Dim RR As Range, r As Range
Dim sCel As Range, eCel
With ActiveSheet.Range("A1").CurrentRegion.Columns("D")
  .Worksheet.AutoFilterMode = False
  .AutoFilter 1, "小計"
  On Error Resume Next
  Set RR = .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible)
  On Error GoTo 0
  .Worksheet.AutoFilterMode = False
  Set sCel = .Cells.Item(2).Offset(, 1)
End With
If Not RR Is Nothing Then
'  MsgBox RR.Address
  For Each r In RR
    Set eCel = r.Offset(-1, 1)
   '数式でセットしたいなら
    r.Offset(, 1).Formula = _
      "=SUM(" & Excel.Range(sCel, eCel).Address(0, 0) & ")"
   '数式でなく、結果だけがほしいなら
    'r.Offset(, 1).Value = WorksheetFunction.Sum(Excel.Range(sCel, eCel))
    Set sCel = r.Offset(1, 1)
  Next
End If
End Sub

提示のデータ配置がよく分からないので、
・"小計"があるのはD列である。
・小計を取りたい項目はE列である。
としてます。
0 hits

【61483】小計の連続処理 みやちゃん 09/5/13(水) 10:30 質問
【61484】Re:小計の連続処理 ゆみこん 09/5/13(水) 10:47 発言
【61485】Re:小計の連続処理 ゆみこん 09/5/13(水) 11:06 発言
【61489】Re:小計の連続処理 ひつまぶし 09/5/13(水) 12:54 発言
【61493】Re:小計の連続処理 ゆみこん 09/5/13(水) 14:54 発言
【61490】Re:小計の連続処理 みやちゃん 09/5/13(水) 12:56 質問
【61494】Re:小計の連続処理 ゆみこん 09/5/13(水) 15:01 発言
【61503】Re:小計の連続処理 みやちゃん 09/5/13(水) 22:25 お礼

20660 / 76736 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free