1

の値workbook1-sheet1-Aが で一致しているかどうかを確認しようとしていますworkbook2-sheet2-E。一致する場合はworkbook1-sheet1-Yを受け取ります'x'

これは私がこれまでに持っているコードRun time error 424 - Object requiredで、if ループでエラーが発生します。

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
4

1 に答える 1

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
于 2012-10-30T14:22:56.333 に答える