2017-02-16 166 views
1

我是Excel VBA新手,這是我的第一個宏,所以請原諒我,如果我犯了一個非常明顯的錯誤。我有以下代碼與工作表進行比較,如果找到匹配項,則在其中一張工作表上做筆記。它沒有錯誤地運行,但沒有做出改變。我看不出我出錯的地方。先謝謝您的幫助。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'。你在想'空'嗎? – Comintern

+0

我修正了這個問題,但它沒有解決問題 – IAntoniazzi

+0

你是如何「修復」它的?代碼沒有什麼明顯的錯誤,所以它不是你的循環條件就是你的數據。 – Comintern

回答

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函數,這樣我就能理解你是如何用一個循環做到的! – IAntoniazzi