поправил теперь ругается на
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]