2014-11-11 4 views
1

Я новичок в VBA, поэтому, пожалуйста, простите меня. У меня возникла проблема с фрагментом кода для поиска в листе базы данных «База данных 4c.CustomerP» на основе критериев в ячейке C14 в листе «1b.SearchClient» и скопируйте соответствующие записи в лист «1b.Search Client». Однако, когда я пытаюсь выполнить код, я получаю сообщение об ошибке:VBA: Поиск базы данных и копирование строк на другой лист

Run-time errow '1004': Method 'Range' of object '_Worksheet' failed

отладки линия приносит мне purchases.Range (Cells (я, 1), Cells (I, 10)) Копировать

.

Надейтесь на добрую душу, можете помочь мне здесь!

Sub findrecord() 


Dim custid As String 
Dim finalrow As Integer 
Dim i As Integer 
Dim targetWorkbook As Workbook 
Dim activeWs As Worksheet 
Dim purchases As Worksheet 

Set targetWorkbook = Application.ActiveWorkbook 
Set activeWs = targetWorkbook.Sheets("1b.SearchClient") 
Set purchases = targetWorkbook.Sheets("4c.CustomerP Database") 

activeWs.Range("A26:J200").ClearContents 

custid = activeWs.Range("C14").Value 

For i = 7 To 10000 
If purchases.Cells(i, 1) = custid Then 
    purchases.Range(Cells(i, 1), Cells(i, 10)).Copy 
    activeWs.Range("A1000").End(x1Up).Offset(1, 0).PasteSpecial x1PasteFormulasAndNumberFormats 
    End If 
Next i 


End Sub 
+2

Попробуйте скорее 'Range (purchases.Cells (I, 1) , purchase.Cells (i, 10)). Copy' – xificurC

+0

Или, наоборот, добавьте 'покупки. Активируйте' над линией копирования. Также есть опечатка в End (x1Up) – gipadm

+0

Спасибо, что я получил его на работу! Cheers –

ответ

1

Клетки в диапазоне необходимо обратиться к покупкам также:

purchases.Range(purchases.Cells(i, 1), purchases.Cells(i, 10)).Copy 

Или использовать с:

With purchases 
    If .Cells(I, 1) = custid Then 
     .Range(.Cells(I, 1), .Cells(I, 10)).Copy 
     activeWs.Range("A1000").End(x1Up).Offset(1, 0).PasteSpecial x1PasteFormulasAndNumberFormats 
    End If 
End With 
+0

Спасибо Радеку, ваш метод работает отлично. –

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