Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2012, 11:13   #1
Koljusha
 
Регистрация: 24.02.2012
Сообщений: 6
По умолчанию ошибка 1004

Здраствуйте

есть следующий код

Public lLastRow As Long
Public AddLine As Long
Dim a As Integer
Dim b As Integer
Dim x As Integer

Private Sub Worksheet_Activate()
lLastRow = Cells.SpecialCells(xlLastCell).Row
MsgBox (lLastRow)
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

AddLine = Cells.SpecialCells(xlLastCell).Row
MsgBox (AddLine)
If AddLine > lLastRow Then


x = Target.Row
a = x + 6
b = a - 1
With Application.Worksheets("Report").Ac tivate
Worksheets("Report").Range("A" & a, "BH" & a).Select

Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.AutoFill Destination:=Range("A" & b, "BH" & a), Type:=xlFillDefault

End With
End If

End Sub




в месте обозначенным оранжевым выдает ошибку подскажите пожалуйста что поправить, код должен копировать формулы в диапазон
Koljusha вне форума Ответить с цитированием
Старый 24.02.2012, 11:36   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Код:
Selection.AutoFill Destination:=Range("A" & b & ":BH" & a), Type:=xlFillDefault
А вообще, в макросе очень много лишнего.
Вы бы показали файл Excel, и пояснили, что там надо делать, - глядишь, форумчане помогли бы упростить макрос, и сократить его до 1-2 строк кода...
EducatedFool вне форума Ответить с цитированием
Старый 24.02.2012, 11:54   #3
Koljusha
 
Регистрация: 24.02.2012
Сообщений: 6
По умолчанию

собственно сам документ я выложить не могу коммерческая тайна))


но вот пример скопировал выдает такую же ошибку при выполнении макроса
Вложения
Тип файла: rar пример.rar (14.6 Кб, 11 просмотров)
Koljusha вне форума Ответить с цитированием
Старый 24.02.2012, 13:15   #4
Koljusha
 
Регистрация: 24.02.2012
Сообщений: 6
По умолчанию

Этот код должен отслеживать вставку новой строки в любом месте листа1 и вставлять строку в соответствующем месте на лист2, связано это с тем что при вставке строки на листе 1 появляется промежуток в ссылочных ячейках.

Например вставили на листе строку меду 5-й и 6-й соответственно сслыки на ячейки на листе два будут А5 и А7 а 6 строка останется незадействованой
Koljusha вне форума Ответить с цитированием
Старый 24.02.2012, 15:17   #5
Koljusha
 
Регистрация: 24.02.2012
Сообщений: 6
По умолчанию

неужели ни кто не знает причину?
Koljusha вне форума Ответить с цитированием
Старый 24.02.2012, 16:19   #6
Koljusha
 
Регистрация: 24.02.2012
Сообщений: 6
По умолчанию

Public lLastRow As Long
Public AddLine As Long
Dim a As Integer
Dim b As Integer
Dim x As Integer

Private Sub Worksheet_Activate()
lLastRow = Cells.SpecialCells(xlLastCell).Row
MsgBox (lLastRow)
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

AddLine = Cells.SpecialCells(xlLastCell).Row
MsgBox (AddLine)
If AddLine > lLastRow Then


x = Target.Row
a = x + 6
b = a - 1

With Application.Worksheets("Report").Ac tivate
Worksheets("Report").Range("A" & a, "BH" & a).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A" & b, "BH" & b).AutoFill Destination:=Range("A" & b, "BH" & a)
End With
End If

End Sub




нашел ошибку неправильно был указан диапазон метода autofill, спасибо за помощь!

теперь у меня возникла другая проблема эту строку прграмма просто игнорирует, подскажите почему?
Koljusha вне форума Ответить с цитированием
Старый 07.03.2012, 09:24   #7
Koljusha
 
Регистрация: 24.02.2012
Сообщений: 6
По умолчанию

Public lLastRow As Integer
Public AddLine As Integer

Private Sub Worksheet_Activate()
lLastRow = Cells(Rows.Count, "A").End(xlUp).Row
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

AddLine = Cells(Rows.Count, "A").End(xlUp).Row

x = Target.Row
b = x + 6
a = b - 1
If AddLine > lLastRow Then

Worksheets("Report").Range("A" & b, "BH" & b).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Set SourceRange = Worksheets("Report").Range("A" & a, "BH" & a)
Set fillRange = Worksheets("Report").Range("A" & a, "BH" & b)
SourceRange.AutoFill Destination:=fillRange

ElseIf AddLine < lLastRow Then
Worksheets("Report").Range("A" & b, "BH" & b).Delete

End If

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
lLastRow = Cells(Rows.Count, "A").End(xlUp).Row
End Sub


вот в таком виде код точно работает кому интересно, еще раз спасибо за помощь здесь очень участливые люди собрались)))
Koljusha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка 1004 при создании PivotCache.Recordset Cave_IAR Microsoft Office Excel 5 26.01.2012 00:53
Ошибка run-time Error 1004 общая ошибка ODBC kaval88 Microsoft Office Excel 0 27.02.2011 20:20
Ошибка макроса Runtime ERROR 1004 RML Microsoft Office Excel 3 20.05.2010 23:33
Ошибка I 1004 kaviga Безопасность, Шифрование 3 29.11.2009 19:37
Ошибка 1004 Alesashka Microsoft Office Excel 3 09.10.2008 11:13