1

皆さん、こんにちは。

私はここに来たばかりで、VBA について合理的な知識しか持っていないので、用語が正しくない場合はご容赦ください。

私が書いたいくつかのマクロを含むExcelファイルがあります。メイン マクロは、同じワークブック内の別のシートのセルに入力した条件に基づいて、すべてのデータにオートフィルターを適用します。フィルターは正常に機能しており、指定された基準がデータ内のレコードと一致する場合、そのデータはコピーされ、別のシートに貼り付けられます。残念ながら、データに存在しない基準を入力すると、Excel/VBA はすべてのデータ (7000 レコードのそれぞれ) をコピーし、実際には結果が見つからないにもかかわらず、データ全体を別のシートに貼り付けます。これを克服する方法と、フィルターを適切に機能させるために使用するコードについて、アドバイスをいただければ幸いです。

基本的に私が望むのは、フィルターがどのデータにも一致しない場合、データはコピー/貼り付けされないということです。私のマクロは、いくつかの条件 (合計 8​​) をチェックしてから、オートフィルターを適用します。コードが必要で、それを基準ごとに各コード行に追加するか、最後に 1 つだけ追加するかはわかりません。

ご協力ありがとうございました!

4

1 に答える 1

0

テーブルの行数とフィルター処理されたテーブルの行数を比較して、フィルターが結果/行を生成したかどうかを確認します。

'assuming the table starts from A1,
MsgBox Range("A1").CurrentRegion.Rows.Count
'confirms the number of rows in the table.
'After trying AutoFilter,
MsgBox ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count
'confirms the number of filtered rows.

これら 2 つの値を変数に格納して比較するか、2 番目の値が 1 (ヘッダー行) かどうかを確認します。1 つの場合は、コピーを試行しないでください。

于 2013-07-12T18:06:58.843 に答える