2014-02-16 72 views
1

我試圖在有新的員工ID輸入到工作表時自動檢查VBA(自動從數據庫中查找他們的信息),如果輸入的ID返回一個被認爲是關聯的個體,消息框會生成通知用戶他們將要選擇一個關聯。目前,我在If Application行中收到運行時錯誤424。我對VBA很新,所以如果我犯了一個愚蠢的錯誤,我很抱歉。任何幫助是極大的讚賞。基於單元格輸入的Vlookup根據vlookup結果警告用戶

編輯代碼 - 感謝Doug和Simoco的幫助。

Sub Worksheet_Change(ByVal Target As Range) 
Dim WatchRange As Range 
Dim IntersectRange As Range 
Set WatchRange = Range("A2:A550") 
Set IntersectRange = Intersect(Target, WatchRange) 
If IntersectRange Is Nothing Then 
    'Do Nothing Spectacular 
Else 

On Error Resume Next 
If WorksheetFunction.VLookup(IntersectRange, Me.Range("A2:M550"), 14, False) = "Associate" Then 

MsgBox "You have choosen an associate for this trip!" 
Else 


End If 
End If 
End Sub 
+1

而不是'Sheet',你的意思'Me',它返回與它的代碼表? –

+0

也許,我現在就去試試看。我從字面上開始嘗試上週的代碼,所以我仍然試圖瞭解基礎知識。我們的老師告訴我們「找到其他代碼並使用它」。不是最有用的建議哈哈。 – Chardo

+0

我將更新我的代碼,但現在出現錯誤,提示「無法獲取WorksheetFunction類的VLookup屬性」。我用google搜索了一下,發現了一些關於錯誤恢復的內容,但是我似乎無法讓它工作。我繼續得到錯誤。 – Chardo

回答

2

試試這個代碼:

Sub Worksheet_Change(ByVal Target As Range) 
    Dim res As Variant 
    If Not Intersect(Target, Range("A2:A550")) Is Nothing Then 
     res = Application.CountIfs(Range("A2:A550"), Target, _ 
       Range("M2:M550"), "Associate") 
     If Not IsError(res) Then 
      If res > 0 Then MsgBox "You have choosen an associate for this trip!" 
     End If 
    End If 
End Sub 
+0

這段代碼是否代替了我已經擁有的一切?當我這樣做時,它根本不會彈出MsgBox。我已經嘗試將它集成到我以前的代碼中,當我這樣做時,它只會導致MsgBox彈出兩次。對於可能非常簡單的事情我很抱歉。 – Chardo

+0

你需要檢查'VLOOKUP'返回「Associate」的權利嗎? –

+0

正確@DougGlancy,當我運行simoco提供的代碼時,它什麼也沒有返回。我看到他只是編輯了他的代碼!讓我嘗試一下。我非常感謝所有幫助人員。 – Chardo