マクロの条件を追加したいのですが
いつもお世話になります、MEGUMIと申します。
既存のマクロに更に条件を追加したいという質問をさせてください。
現在、フォルダの中にある全てのエクセルファイルを下記のような処理をしています。
●エクセルファイルの中の全てのSheetの1行目以降のA,B,C,G,H列をコピーしてマクロを動作させるエクセルファイルのSheet1に順次(A,B,C,D,E列)ペースト
※マクロは下記の内容( Sub 今日のわたし()以降です )です。
これに下記のような条件を追加したいのですがどのようにすればいいでしょうか?
○I列に”元気”という文字が存在していた場合に限って、その列のA,B,C,G,H,I列をコピーしてマクロを動作させるエクセルファイルのSheet1に順次(A,B,C,D,E,F列)ペースト
お忙しいところ大変恐れ入りますがもしご存知の方がいらっしゃりましたらご指導のほど何卒宜しくお願いいたします。
Sub 今日のわたし()
Dim XlFile As String
Dim MotoDataLastRow As Long
Dim CopySakiLastRow As Long
ThisWorkbook.Activate
Worksheets(1).Select
Cells.Clear
XlFile = Dir(ThisWorkbook.Path & "\*.xls?")
Do While XlFile <> ""
If XlFile <> ThisWorkbook.Name Then
Workbooks.Open ThisWorkbook.Path & "\" & XlFile, ReadOnly:=True
Worksheets(1).Select
MotoDataLastRow = Workbooks(XlFile).Worksheets(1).[A65536:H65536].End(xlUp).Row '元データファイルの最終行を取得
CopySakiLastRow = ThisWorkbook.Worksheets(1).[A65536:E65536].End(xlUp).Row 'インポート先の最終行を取得
If MotoDataLastRow > 1 Then
Range([A2], Cells(MotoDataLastRow, "C")).Copy ThisWorkbook.Worksheets(1).Cells(CopySakiLastRow + 1, "A")
Range([G2], Cells(MotoDataLastRow, "H")).Copy ThisWorkbook.Worksheets(1).Cells(CopySakiLastRow + 1, "D")
End If
Workbooks(XlFile).Close False
End If
XlFile = Dir()
Loop
End Sub
補足
「貼り付け」というシート名なので、Worksheets("貼り付け")として、 倉庫コードはE列から始まるので Range("e1")としました。 その結果、質問の「2」の条件に合わないにも関わらず「a」の処理に 進むマクロへと進んでしまいます。 解答のマクロは正しいか、もう一度見ていただけると助かります。 条件分岐から処理「a」までのVBAは以下のように記述しました。 Dim Rng As Range Dim Bol1 As Boolean Dim Bol2 As Boolean Dim i As Integer Bol1 = False Bol2 = False Set Rng = Worksheets("貼り付け").Range("e1") For i = 3 To 300 If Rng(i, 2) >= 1 And Not (InStr(Rng(i).Value, "B") = 0) Then Bol1 = True If Rng(i, 2) >= 1 And InStr(Rng(i).Value, "B") = 0 Then Bol2 = True If flg1 And flg2 Then Exit For Next Select Case True Case Bol1 = True And Bol2 = True 処理「a」