поправил теперь ругается на  
 ws = c1.Parent.Cells.Rows(row1) 
 или  на  
 source_sheet = c1.Parent: ws1 = source_sheet.Cells.Rows(row1) 
 не то, ни дгругое его(VBA 

) не устраивает не доконца понимаю значение выражение Parent  
Добавлено:  а ошибка звучит следущим образом: "Run-time error `91`: Object variable or With blok variable not set" я так понял что то с типами не страстается ?? или нет?    
Добавлено:  Общий вид программы мега макроса %)[more=код..] 
 Sub GeniralМакрос() 
 'ищем значение по наименованию столбцп так как таблицы две останавливаемся на втором 
 'кривой поиск правим   
 Dim search_result As Range 
 Dim Start_search As Range 
 Dim some_sheet As Worksheet 
 Dim search As Range   
 Set some_sheet = Worksheets("OTCHET") 
 Sheets("OTCHET").Select 
 Set Start_search = some_sheet.Cells(1, "A")    
 Set search_result = Cells.Find(What:="Наименование цен", After:=Start_search, LookIn _ 
         :=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ 
         xlNext, MatchCase:=False, SearchFormat:=False)   
 Set search_result = Cells.FindNext(After:=search_result) 
 Set search = search_result.Offset(3, 0) 
 'MsgBox search_result     
 'создаём временный лист в котором будет храниться список бумаг и скрываем его 
 'Необходимо сделать проверку на существование подобного листа    
 'Sheets.Add.Name = "СписокБумаг" 
 'ActiveWindow.SelectedSheets.Visible = False      
 Dim ws As Worksheet, str As String 
 Dim in_r As Range, out_r As Range 
 Dim index As Long, found As Boolean 
 Dim c1 As Variant, c2 As Variant 
 index = 1   
 Dim row1 As Long, column1 As Long, ws1 As Range, target_sheet As Worksheet, source_sheet As Worksheet 
 Set target_sheet = Sheets("СписокБумаг")      
 ' Входной диапазон на листе со внешним именем "Лист1" A:A ((((изменил 
 Dim last_cell As Long 
 With Worksheets("OTCHET") 
 last_cell = .Cells.SpecialCells(xlCellTypeLastCell).Row 
 Set in_r = Range(search, search.End(xlDown)) 
 End With 
 ' Выходной диапазон на листе со внешним именем "СписокБумаг" A:A 
 Set out_r = Worksheets("СписокБумаг").Range("A:A")    
 For Each c1 In in_r.Cells 
     found = False 
     For Each c2 In out_r.Cells 
         If IsEmpty(c2) Then Exit For 
             found = (c2.Value = c1.Value) 
         If found Then Exit For 
     Next c2    
     If Not found Then 
         out_r.Cells(index, 1).Value = c1.Value 
         str = out_r.Cells(index, 1).Value    
         If c1.Value <> "" Then 
         Set ws = Sheets.Add 
         ws.Name = c1.Value 
         End If   
         index = index + 1 
     End If       
     row1 = c1.Row 
     column1 = c1.Column 
     ' или сразу так: source_sheet = c1.Parent: ws1 = source_sheet.Cells.Rows(row1) 
     ws = c1.Parent.Cells.Rows(row1)    
     ' Просто, не правда ли? Можно всегда узнать, какому 
     ' листу принадлежит указанный диапазон    
     MsgBox "Sheet name is '" + source_sheet.Name + "'."    
     ws1.Copy 
     target_sheet.Paste (target_sheet.Cells(row1 + 1, 1))    
     ' второй параметр должен быть всегда 1, когда копируется строка. 
     ' Если надо иначе, то выделаяем не строку целиком (Row), а формируем диапазон, 
     ' (Range) тогда его можно по горизонтали в любое место вставить.     
     If IsEmpty(c1) Then Exit For 
 Next c1    
 MsgBox "Done", vbInformation      
 End Sub 
 [/more]