2016-11-03 9 views
-1

высоко ценим вашу помощь по этому вопросу. Я пытаюсь ВПР из рабочего листа А до рабочего листа B и я нашла это пример кода, в этом форуме, но неожиданно получил ошибку - Ошибка выполнения «1004»: Метод «Range» из object_Worksheet»не удалосьошибка во время Vlookup с листа A на рабочий лист

Sub Sample() 
    Dim wbThis As Workbook, wbThat As Workbook 
    Dim wsThis As Worksheet, wsThat As Worksheet 
    Dim aCell As Range 

    Set wbThis = ThisWorkbook 
    '~~> Let's say this is the sheet where you want the result 
    '~~> Change name as applicable 
    Set wsThis = wbThis.Sheets("Sheet1") 

    '~~> Change path as applicable 
    Set wbThat = Workbooks.Open("C:\Users\Fahmi\Desktop\VBA TESTING\Template.xlsx") 
    Set wsThat = wbThat.Sheets("CtyAccesCode") 

    With wsThis 
     For Each aCell In .Range("H2:H" & LastRow) 


      If Len(Trim(.Range("AD" & aCell.Row).Value)) <> 0 Then 
       .Cells(aCell.Row, 28) = Application.WorksheetFunction.VLookup(_ 
             aCell.Value, wsThat.Range("A1:B13"), 2, 0) 
      End If 
     Next aCell 
    End With 

    wbThat.Close (False) 
End Sub 

и ошибка в этой строке

and the error on this line

заранее спасибо!

+1

Проблема заключается в том, что код никогда не объявляет или не присваивает значение переменной 'LastRow', поэтому вы в основном говорите« Для каждой ячейки в H2: H0 », а поскольку H0 не является действительной ссылкой на ячейку, код выдает ошибку , – tigeravatar

ответ

0

Вы никогда не объявляли lastRow. Есть более элегантный и пуленепробиваемые способов сделать это, но быстрый хак, чтобы ваши усилия идти может быть что-то вроде этого:

Dim lastRow As Integer 
lastRow = wsThis.UsedRange.Rows.Count 

Вы можете найти более пуленепробиваемые способы нахождения фактического последней строки здесь:

How can I find last row that contains data in the Excel sheet with a macro?

Но в зависимости от содержимого вашего листа у вас могут быть более простые или более прозрачные способы.

Смежные вопросы