3

従業員をその資格とともに分類するコードを作成しました。不要な資格を持つ従業員を除外するために、資格のカテゴリにタイトルを付ける各列にフィルターを適用しました。

簡単に見つけられるように、繰り返し使用する名前と資格を非表示にするために、VBA コードを作成しました。ただし、コードを自動的に実行することはできません。

現在、コードを実行できる唯一の方法は、次のように設定することです

Private Sub Worksheet_Change(ByVal Target As Range) を実行し、任意のセルの値を変更します。

私は正しい解決策であると信じているものを次の場所で見つけました:

http://www.ozgrid.com/forum/showthread.php?t=72860

しかし、私はそれを理解することはできません。

フィルターの実行後にセルを選択および選択解除することなく、このコードを実行する方法はありますか?

4

3 に答える 3

3

私の記事の重要なポイントVBA を使用してフィルター処理されたリストへの変更をトラップする

記事には詳細とサンプル ファイルがあり、要点は以下にまとめられています。

  1. 「ダミー」ワークシートが追加され、メイン シートでフィルター処理されている範囲を指す1 つのSUBTOTAL数式が追加されます。A1
  2. Worksheet_Calculate()イベントが「ダミー」ワークシートに追加されます。このイベントは、フィルターが変更されたときに数式SUBTOTALが更新されると発生します。

ワークブック計算を次のように実行する場合は、次の 2 つのセットが必要です。Manual

  1. 「ダミー」以外のすべてのシートのプロパティを FalseWorkbook_Openに設定するイベントを追加します。EnableCalculation
  2. ワークブックを計算モードで実行する
于 2012-10-10T00:00:07.237 に答える
1

あなたが言及したozgrid コードworksheet_calculateは、オートフィルターを変更したときに再計算するものがある限り、コードをイベント (ワークシート モジュール内) に配置できることを示しています。この何かは、ワークシートで非表示にできる小計式にすることができます。=subtotal(3,A:A)

于 2012-10-09T21:52:41.127 に答える
1

まだ調査が必要ですが、Calculation = xlCalculationManual の場合に Chart Calculate イベントがトリガーされるようです。少なくとも私の Excel 2007 では動作します。手順は次のとおりです。

  • テーブル列のデータを実際に使用するチャート(Sheet1で「Chart 1」と言う)を作成します
  • フィルターを変更すると画像が更新されることを確認します
  • clsChartEvents などの新しいクラスを作成します。

    Public WithEvents Chart As Chart
    Private Sub Chart_Calculate()
      Stop
    End sub
    
  • このコードをいくつかのモジュールまたはクラスに追加します。

    Private chartEvents as new ChartEvents 'create a module-scope variable
    sub SubscribeToChartEvents
      set chartEvents.Chart = Sheet1.ChartObjects("Chart 1").Chart
    end sub
    
  • SubscribeToChartEvents を実行する
  • フィルターを変更すると、Sub Chart_Calculate() に表示されるはずです
于 2014-09-30T18:54:16.447 に答える