Excel VBAについて教えて下さい。
00というブックとテストというブックがあります。
00のデータを並び替え、一部変更し、テストのシート3へ貼付けを行いたいのですが、
うまく作動してくれません。以下に現在のコードを記載しましたので、ご指摘いただければと思います。
やりたいことは
1.ブック”00”のシート00にて条件がF列が0、E列がHでソートをかけます。
2.E列のHをすべて数字の1に変更します。
3.今度は別の条件、F列が1、E列がH、D列が1でソートをかけます。
4.E列のHをすべて消去します。
5.すべて表示させA列からE列までのデータを、テストのシート3へ貼付けをします。
コピー&ペーストは上手くいくのですが、肝心のソート+文字の変更+消去が出来ていません。
ネットを見ながら書いたコードで、VBAを勉強中です。
よろしくお願いします。
あと、この作業の前にブック00のB列にて昇順のソートをかけるというコードを追加したいのですが、
それについても教えていただけるとうれしいです。
よろしくお願い致します。
Private Sub Worksheet_Activate()
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim i As Long
Application.ScreenUpdating = False
Set wb1 = ActiveWorkbook
Set wb2 = Workbooks.Open("C:\Documents and Settings\デスクトップ\メモ\00.xls", ReadOnly:=True)
With wb2.Worksheets("00").Range("A1").CurrentRegion
.AutoFilter
.AutoFilter Field:=6, Criteria1:="=" & "0", Operator:=xlAnd
.AutoFilter Field:=5, Criteria1:="=" & "H", Operator:=xlAnd
.AutoFilter
x = .Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To x
If Cells(i, 5) = "H" Then
Cells(i, 5) = Replace(Cells(i, 5), "H", "1")
End If
Next i
With wb2.Worksheets("00").Range("A1").CurrentRegion
.AutoFilter
.AutoFilter Field:=6, Criteria1:="=" & "0", Operator:=xlAnd
.AutoFilter Field:=5, Criteria1:="=" & "H", Operator:=xlAnd
.AutoFilter Field:=4, Criteria1:="=" & "1", Operator:=xlAnd
.AutoFilter
x = .Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To x
If Cells(i, 5) = "H" Then
Cells(i, 5) = Replace(Cells(i, 5), "H", " ")
End If
Next i
wb2.Sheets("00").Range("B1", .Cells(Rows.Count, 5).End(xlUp)).Copy
wb1.Sheets("Sheet3").Range("K3").PasteSpecial
wb2.Close False
Range("A1").Select
Application.ScreenUpdating = True
End With
End With
End Sub
お礼
一度、別のセルに貼り付けて、値を貼り付けることにしました。 ありがとうございました。
補足
早速の回答ありがとうございます。 いろいろ探してみたのですが、SpecialCellsでコピペの際に 個別のセルを扱うなんてことは見つかりませんでした。 貼り付けるセルの個数は200~1500になります。 貼り付け先を変えるのが早いですね。 ちなみに、for~nextやdo~loopを使うのが面倒になるということで しょうか?