2013-04-08 2 views
0

Этот код работает правильно:Установить диапазон от различного листа и ВПР функции

Sub test_range() 
Dim Range1 As Range 
Set Range1 = Sheet4.Range("B2:F6081") 
End Sub 

Когда я изменить диапазон в переменной он дает мне ошибку 1004:

Sub test_range() 
Dim Range1 As Range 
Set Range1 = Sheet4.Range(Cells(2, 2), Cells(6081, 6)) 
End Sub 

Что случилось с моим «выбор ячеек»?

Кроме того, я хотел бы применить его на функцию ВПР:

For C = 2 To ColNumber 

    C4 = C + 4 
    For R = 2 To RowNumber 
     Set Condition = Sheet1.Cells(R, 2) 
     'MsgBox (Condition) 
     Set Range1 = Sheet4.Cells(2, 2).Offset(6079, C + 3) 'B2 (row 2 column 2) : F6081 (row 6081 column 6) 
     'MsgBox (Range1) 
      arg1 = 5 
      arg2 = False 
     Sheet1.Cells(R, C4).Value = Application.WorksheetFunction.VLookup(Condition, Range1, 5, 0) 
    Next R 

Next C 

Я попытался изменить диапазон в

Range1 = Sheet4.Cells(2, 2).Offset(6079, C + 3) 

Функция Диапазон работала, но функция ВПР (снова) дал мне error 1004

Я прочитал несколько случаев для vlookup и каждого тусклого результата vlookup в качестве варианта. Должен ли я это делать? Не могу я просто поместить результат этого на значение столбца?

+0

На вашей первой задаче: '' Cells' означает ActiveSheet.Cells'! Поэтому, если ваш активный лист не является Sheet4, 'Sheet4.Range (Cells (...' даст вам ошибку! Используйте 'Sheet4.Range (Sheet4.Cells' вместо этого или даже лучше' Sheet4.Cells (2,2)) .Resize (6080,5) ' –

+0

работает хорошо для обеих функций, диапазон и vlookup. THANKS A LOT –

+0

отлично! Я отправил его в качестве ответа. Если он решил вашу проблему, отметьте его как ответ тогда! –

ответ

1

Cells означает ActiveSheet.Cells! Поэтому, если ваш активный лист не Sheet4, Sheet4.Range(Cells(... предоставит вам ошибку!

Используйте вместо этого Sheet4.Range(Sheet4.Cells.

Или еще лучше, использовать Sheet4.Cells(2,2).Resize(6080,5)