2

セルが変更されたときに実行されるマクロがあり、表示されているセルのみを合計したいので、誰かがシートをフィルターするとマクロが実行され、表示されているセルだけが合計されます。

関数は見つかりましたが、SpecialCells(xlCellTypeVisible)うまく機能させることができません。

コードの私の考えは次のようなものです:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Rcells As Range
    Dim sum as Double
    sum = 0
    For each Rcells In Range("A5:A65536").SpecialCells(xlCellTypeVisible)
    sum = sum + Rcells.Value
    Next Rcells
    Sheets("aSheet").Range("B1").Value = sum
End Sub

表示されているセルだけを合計することはできましたが、自動的には実行されません。

なぜ機能しないのですか?

4

2 に答える 2

2

詳細な手順とサンプル ファイルを含む、VBA を使用してフィルター処理されたリストへの変更をトラップする私の記事からの 2 つの重要な 2 つの手順:

  1. 2 番目のダミーワークシートが追加され、メイン シートでフィルター処理されている範囲 (つまり、フィルターをキャプチャする範囲) を指す単一のSUBTOTAL数式が追加されます。A1
  2. ダミーWorksheet_Calculate()ワークシートにイベントが追加されます。このイベントは、メイン シートでフィルターが変更されたときに数式が更新されると発生します。SUBTOTAL
于 2012-11-12T12:16:41.090 に答える
0

小計機能をチェックしてください。=subtotal( と入力し、次に fx を押してその仕組みを理解します。

于 2012-11-12T11:45:12.103 に答える