システムwiki

Office:オートフィルターループ-空でない場合にのみ実行

JulioNa 解決済 最終更新日:2020-09-01 16:00

* EDIT:>ではなく<の下のコードに書きましたが、ここにエラーを入力してください.

オートフィルターのコードは次のとおりです:

ws.Range( "A2:A6")の各rngについて

fac=rng.Value

Worksheets( "Results").Range( "A1:A1000").AutoFilter _

フィールド:= 1、条件1:= fac

Set fltrng=wsr.UsedRange.SpecialCells(xlCellTypeVisible)

If(fltrng.Rows.Count)>1 Then

(メールを作成)

これは、結果を新しいOutlookメールに貼り付けるために行われます.

他のすべてはうまく機能しますが、私の唯一の問題は、上記のコードが1つのメールのみを作成し、それぞれのメールは作成しないことです. fac値.

ただし、Ifステートメントを削除すると、コードはごとに1つのメールを作成します
fac
フィルターされた範囲が空の場合でも値.

フィルタリングされた結果が空白でない場合にのみ、メールを作成する必要があります.

**注:作成される唯一のメールはfac範囲の最後の値に対するものです

返信リスト(回答:4)

1 #
HansVMV

変更

Set fltrng=wsr.UsedRange.SpecialCells(xlCellTypeVisible)

If(fltrng.Rows.Count)>1 Then

~

Set fltrng=wsr.AutoFilter.Range.SpecialCells(xlCellTypeVisible)
If fltrng.Count>1 Then

応答1# ->にスキップ
2 #
JulioNa

部分的に機能します.

確かに必要な量のメールが作成されますが、オートフィルターを使用した最初の列が範囲に追加されるだけですが、tableの幅は3列です.

編集:

サイズ変更を追加しただけです

Set fltrng=wsr.AutoFilter.Range.Resize(、3).SpecialCells(xlCellTypeVisible)

正常に動作しています!

応答2# ->にスキップ
3 #
HansVMV

これを試してください:

fltrng=wsr.AutoFilter.Range.SpecialCells(xlCellTypeVisible)を設定します
fltrng.Count>1の場合
fltrng=fltrng.Resize(、3)を設定します
...

応答2# ->にスキップ
4 #
TinaChe

フリオさん、

機能することを共有していただきありがとうございます.ハンスの返答を参照することもできます.

この質問についてさらにサポートが必要な場合は、遠慮なくお知らせください.