2016-09-16 4 views
0

このコードでは、(Sladeに感謝します)フィルタリングされた範囲をコピーして別のシートに貼り付けます。しかし、私はHAAシートに別のフィルタリングされた範囲を追加することによってこのコードを複製しようとしましたが、何らかの理由で行11を選択してデータをペーストします。フィルタリングされた範囲をシートに追加する

Sub Run() 

    Application.ScreenUpdating = False 

    Dim x As Long 
    Dim rf As Range, wsTo As Worksheet, wx As Range 

    Set rf = ThisWorkbook.Sheets("Table").UsedRange 
    Set wsTo = Sheets("HAA") 
    Set wx = ThisWorkbook.Sheets("HAA").UsedRange 

    x = Range("B" & Rows.Count).End(xlUp).Row 

    rf.AutoFilter 
    rf.AutoFilter 12, "associated" 
    rf.Copy 

    wsTo.Range("A1").PasteSpecial xlPasteValues 

    rf.AutoFilter 
    rf.AutoFilter 12, "not found" 
    rf.Offset(1, 0).Copy 

私は、最後の行の後に貼り付けるには、もともと.PasteSpecial xlPasteValues

wsTo.Range("A1" & x).Select 

    Application.ScreenUpdating = True 

End Sub 
+0

(例えば** x **)から?最初に利用可能な空白セルを取得するためにオフセットしないのはなぜですか?例えば'x = wsTo.Range(" B "&Rows.Count).End(xlUp).OFFSET(1、0).Row'' 'wsTo.Range(" A "&x).Select' 。 – Jeeped

+0

入力と希望の結果の例をいくつか追加しますか? – user3598756

+0

@Jeeped x = wsTo.Range( "A"&Rows.Count).End(xlUp).Offset(1、0).Row これで、既存のデータに貼り付けられます。 – FonR

答えて

0

を持っていた、それがデータを貼り付けた場所を確認するために選択するように(下)のようなもの、これを変更:

Dim rangeTo As Range 
Set rangeTo = wsTo.UsedRange ' or = wsTo.Range("A1").CurrentRegion 
Set rangeTo = rangeTo.Offset(rangeTo.Rows.Count)(1) ' (1) is to get the first cell 
Application.Goto rangeTo ' optional if you want to see where the values will be pasted 
rangeTo.PasteSpecial xlPasteValues 

コードの問題は、データを貼り付ける前に最後の行を取得することです。また、Range(は通常、常にあなたが望む1ではないかもしれません、現在アクティブなシートを意味し、それは範囲の前にシートを指定すると良いでしょう:

x = wsTo.Range("B" & wsTo.Rows.Count).End(xlUp).Row 
あなたが最後に人口の行を取得しようとしているどのようなワークシート
+0

rangeTo.PasteSpecial xlPasteValue にオブジェクトが必要ですが、これが実行される前にこれがすでに識別されていると思いました。 – FonR

+0

@FonR貼り付け前にデータをコピーすることを忘れましたか? – Slai

+0

これについて考えてください。 – FonR

関連する問題