2017-02-16 9 views
1

Excel VBAを初めて使用しました。これは最初のマクロですので、間違いがあれば許してください。ワークシートと比較するコードと、一致するものが見つかった場合は、シートの1つにメモを付けるコードがあります。それはエラーなしで実行されますが、変更は行われていません。私はどこが間違っているのか分かりません。助けを前にありがとう。Excel VBA - マクロは実行されますが、効果はありません。

Sub invalid() 

Dim i As Integer 
Dim j As Integer 

Dim main As Worksheet 
Dim invalid As Worksheet 

i = 2 
Set main = ThisWorkbook.Worksheets(1) 
Set invalid = ThisWorkbook.Worksheets(2) 

Do 
    j = 2 
    Do 
     If LCase$(invalid.Cells(i, 1).Value) = LCase$(main.Cells(j, 13).Value) Then 
      main.Cells(j, 14).Value = "Invalid Email" 
     End If 
     j = j + 1 
    Loop While main.Cells(j, 2) = Not Null 
    i = i + 1 
Loop While invalid.Cells(i, 2) = Not Null 


End Sub 
+1

'main.Cells(J、2)' 'NULL'になることはありません。あなたは 'Empty'を考えていますか? – Comintern

+0

私はそれを修正しましたが、問題を解決しませんでした – IAntoniazzi

+0

どのように修正しましたか?コードには明らかに間違ったことはありません。したがって、ループ条件またはデータのどちらかです。 – Comintern

答えて

1

それはループの1つを除去し、これを試してみてください:

Sub invalid() 

Dim i As Long 
Dim j As Long 
Dim lRow As Long 
Dim main As Worksheet 
Dim invalid As Worksheet 

Set main = ThisWorkbook.Worksheets(1) 
Set invalid = ThisWorkbook.Worksheets(2) 
lRow = main.Cells(main.Rows.Count, 13).End(xlUp).Row 

For i = 2 To lRow 
    j = 0 
    On Error Resume Next 
    j = Application.WorksheetFunction.Match(main.Cells(i, 13), invalid.Range("A:A"), 0) 
    On Error GoTo 0 
    If j > 0 Then main.Cells(i, 14) = "Invalid Email" 
Next i 

End Sub 
+0

それはうまくいった!ありがとうございました! – IAntoniazzi

+0

今すぐMatch機能を読んで、1回のループでどのようにしたのか分かります! – IAntoniazzi

関連する問題