2012-10-30 2 views
1

workbook1-sheet1-A의 값이 workbook2-sheet2-E과 일치하는지 확인하려고합니다. 일치하는 경우 workbook1-sheet1-Y'x'을받습니다.다른 통합 문서에서 두 범위 확인 (런타임 오류 424)

이것은 내가 지금까지 가지고있는 코드이며 if 루프에서 Run time error 424 - Object required 오류를 제공합니다.

Sub Check() 
' 
Application.ScreenUpdating = False 

endRow = Range("A" & Rows.Count).End(xlUp).Row 

wkbSLA = ("F:\Workbook2") 

For i = 2 To endRow 
    If Cells(i, 1).Value = wkbSLA.Sheets("Sheet2").Range("E2:E575").Value Then 
     Range("Y" & i) = "x" 
    End If 
Next i 

' 
End Sub 
+0

제목을 편집했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야한다"는 것을 참조하십시오. –

+0

던져진 예외는 무엇입니까? 또한'wkbSLA '가 이미 열려 있습니까? – Trisped

+0

@ JohnSaunders, 사과드립니다. – CustomX

답변

0

코드가 원하는 모든 것을 수행하도록하려면 변수를 사용하여 개체를 정규화해야합니다.

또한 다중 셀 범위에서 .Value 속성을 사용할 수 없습니다. 그것은 아마 당신의 실수가 타격을 치는 곳일 것입니다. 이 방법에 접근하는 더 좋은 방법은 .Find 방법입니다.

코드를 다음과 같이 작성하면 사용자를 위해 작동해야합니다 ... 필요에 따라 조금만 조정해야 할 수도 있습니다.

Option Explicit 

Sub Check() 

Application.ScreenUpdating = False 

Dim wkb1 as Workbook, wkb2 as workbook 
Set wkb1 = Workbooks("workbook1") 
Set wkb2 = Workbooks("F:\Workbook2") 
' -> do you need Workbooks.Open("F:\Workbook2") here? 
' Seems you may if the workbook you want to access is closed 

Dim wks1 as Worksheet, wks2 as Worksheet 
Set wks1 = wkb1.Sheets(1) 'may need to change this reference for your needs 
Set wks2 = wkb2.Sheets("Sheet2") 

With wks1 

    Dim endRow as Long 
    endRow = .Range("A" & Rows.Count).End(xlUp).Row 

    Dim i as Long 
    For i = 2 To endRow 

     Dim rng as Range 
     Set rng = wks2.Range("E2:E575").Find .Cells(i,1).Value lookat:=xlWhole 

     If Not rng Is Nothing Then .Range("Y" & i) = "x" 

    Next i 

End With 

End Sub 
+0

IF에 뭔가 빠져있을 가능성이 있습니까? 콘텐츠를 검색 할 수 있도록 통합 문서를 열어야합니까? – CustomX

+0

@ t.thielemans -> 통합 문서가 열려 있는지 여부를 알 수 없습니다. 나는 그 주석을 코드에 남겼다. 그것은 OP가 구별하기위한 것입니다. AFAIK, 적어도 VBA에서는 검색을 위해 통합 문서를 열어야합니다. 그게 내가 잘못한거야? –

+0

나는 그것을 묻는 이유는 모르겠다.)하지만 wks2.Range ("E2 : E575")의 경우 오류가 발생합니다. 셀 (i, 1)을 찾습니다 .Value lookat : = xlWhole Then .Range ("Y"& i) = "x"'무언가가없는 것 같아 – CustomX

관련 문제