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
お礼
大変申し訳ありませんでした。 画像を間違って削除してしまいましたので、 再度、同じ質問を投稿し直します。 有難うございました。
補足
ご回答、誠に有難うございます。 説明不足で申し訳ありませんでした。 添付画像は Rows("5:5").AutoFilter となっております、間違えました。 (1)図1の好みの「項目のセル1つ(例:い)」を手動で選択してから 「質問のマクロ実行」します。 (2)次に、同様に好みの他の「項目のセル1つ」を手動で選択してから (1)と同じ「質問のマクロ実行」します。 (3)次に、同様に好みの他の「項目のセル1つ」を手動で選択してから (1)と同じ「質問のマクロ実行」します。 ・ ・ というように、繰り替えし実行したいのです。 (エクセルの繰り替えし機能が使えればよいのですが、当方のエクセルは使えないようでございます) もちろん、選択する「項目のセル1つ」は4行目でもどこでも結構でございます。 よろしくお願い致します。