1

質問が少しわかりにくいと思いますが、私が抱えている問題は、ラインアイテムのデータベースを持っていることです。マクロを使用して、これらのアイテムを特定のセクションにフィルターしてコピーします。あるセクションでは、現在データベースにアイテムがありません(おそらく将来的にはそうなるでしょうが、確かではありません)。何もコピーしないはずのこのセクションが、データベース内のすべてをコピーしていることに気付きました。マクロを段階的に実行して、データベースに何も表示されずに正しくフィルタリングされていることを確認しましたが、何らかの理由でデータベース内のすべてのアイテムがコピーされました。なぜこれを行うのかはわかりませんが、以下は私が使用しているコードです。「正しいデータを選択してコピーするコードを選択して、データベースが何もフィルタリングしない場合は何もコピーしないと言いますが、その方法がわかりません. どんな助けでも大歓迎です

'To filter data
'Sheets("Database").Select
'Range("A1").AutoFilter Field:=5, Criteria1:="2500", Operator:=xlOr, Criteria2:="All"
'Range("A1").AutoFilter Field:=6, Criteria1:="Adder"
'Range("A1").AutoFilter Field:=7, Criteria1:=Array("FL", "MF", "HF", "Furnace Eng", "Launder"), Operator:=xlFilterValues
'To select correct data to copy
'Dim I As Long
'I = Range("B" & Rows.Count).End(xlUp).Row
'Range("B2:B" & I).Copy
'To copy data
'Sheets("Quote Sheet").Select
'ActiveCell.Offset(1, 0).Select
'Selection.PasteSpecial Paste:=xlPasteValues
4

2 に答える 2

0

フィルタリングされたデータをコピーするには、このメソッド ( Untested ) を使用します。また、上記のコードの 3 番目のオートフィルターの例を使用して、.Offset

    Dim Dim copyFrom As Range

   '~~> I am assuming that the Headers are in Row 1
   '~~> Filter, offset(to exclude headers) and set the filtered range
    With .Range("A1")
        .AutoFilter Field:=7, Criteria1:=Array("FL", "MF", "HF", "Furnace Eng", "Launder"), _
        Operator:=xlFilterValues
        Set copyFrom = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow
    End With

    If Not copyfrom Is Nothing Then
        copyfrom.Copy '<~~ Copy the range
    End If
于 2013-03-27T15:16:12.437 に答える
0

私はあなたの状況をチェックインします:

If Range("B1").CurrentRegion.Rows.Count >1 Then
于 2013-03-27T15:21:03.463 に答える