Office:オートフィルターループ-空でない場合にのみ実行
* 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)
変更
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フリオさん、
機能することを共有していただきありがとうございます.ハンスの返答を参照することもできます.
この質問についてさらにサポートが必要な場合は、遠慮なくお知らせください.