Страницы: 1
RSS
application defined or object defined error 1004
 
Ребят, подскажите пожалуйста, в чем трабл. Ошибка
Проверил на отдельном модуле, все работает, значение находит (ячейка не пустая).
Код
Application.ScreenUpdating = False 
zx = Range("B:B").Find("Òåêóùèå çàÿâêè").Offset(1, 0).Row 'application defined or object defined error 1004
Set CR0 = Cells(zx, 2).CurrentRegion
p0 = CR0.Row + 1
i = p0
Изменено: vadik-ceo - 30.03.2018 16:32:54
 
Так находит значение или просто ячейка не пустая? Файл-пример в студию
Согласие есть продукт при полном непротивлении сторон
 
лучше искать так, если не найдет ошибку не выдаст
Код
Set zx = Range("B:B").Find("Текущие заявки")
If Not zx Is Nothing Then r = zx.Offset(1, 0).Row
Set CR0 = Cells(r, 2).CurrentRegion
 
V,
Спасибо, так действительно лучше.
Еще вопрос, если можно. У меня есть следующий цикл:
Код
i = p0
Do
zx1 = Range("B:B").Find("Текущие заявки").Offset(1, 0).Row
Set CR2 = Cells(zx1, 2).CurrentRegion
p1 = CR2.Row + 1
p2 = CR2.Rows.Count - 1
p3 = CR2.Row + CR2.CurrentRegion.Rows.Count - 1
  If Cells(i, 21).Value = "ФАКТ" Then
   If Cells(i, 19).Value = "янв" Then
    zx2 = Range("B:B").Find("янв").Offset(1, 0).Row
    Set Jan = Cells(zx2, 2).CurrentRegion
    j1 = Jan.Row + 1
    j2 = Jan.Rows.Count - 1
    j3 = Jan.Row + Jan.CurrentRegion.Rows.Count - 1
    Rows(i).Select
    Selection.Cut
    Rows(j3 + 1).Insert
   End If
  End If
  i = i + 1
Loop Until IsEmpty(Cells(i, 2))

Один раз макрос работает на ура.
Второй раз запускаю, возникает ошибка "метод insert из класса range завершен неверно".
Не понимаю, что не так...
Изменено: vadik-ceo - 30.03.2018 16:42:44
 
Так ведь работает "на отдельном модуле" - вот так и пользуйте :)
Когда ошибка?
 
Да вот как бы не понятно, интересно, где не прав я) Почему там работает, а тут абсолютно такой же код и через раз)
 
V, на Ваш код все равно ругается. Такую же ошибки выдает при повторном запуске макроса.
 
файл показывайте.
 
Прикладываю!
 
Цитата
vadik-ceo написал:
а тут абсолютно такой же код и через раз)
- вот где это тут? В форуме ничего вообще ругаться не может...
 
а я же дописал в коде текстом ошибку)
Вот здесь и здесь=)
Код
zx1 = Range("B:B").Find("Текущие заявки").Offset(1, 0).Row
Rows(j3 + 1).Insert
Изменено: vadik-ceo - 31.03.2018 01:08:48
 
Я вижу что дописали. Но вот незадача - никак на форуме код не запустить...
 
Hugo,

А я же прикрепил файл выше. Продублирую, очень помощь нужна....
 
Прикладывать нужно к первому сообщению, в дебрях темы я его не видел (форум бывает сразу не показывает посты), а позже я уже вверх страницу не отматывал.
У меня с тем первым файлом всё отрабатывает без ошибки.
 
Hugo,
И правда сработал. Но у меня в основном файле почему-то траблы продолжаются....
А подскажите пожалуйста, что нужно исправить в моем коде, чтобы просматривали и строки в середине диапазона "Текущие заявки". Я попробовал провести макрос для строк по условию в середине, не отработал....
Помогите пожалуйста.
 
Файл из #9 мне уже знаком. Присвойте имя ячейке с текстом "Текущие заявки" и тогда вообще ("капризный") метод Find будет не нужен.
Владимир
 
sokol92,

Таким образом?
Код
Dim a as String
a="Текущие заявки"
Изменено: vadik-ceo - 30.03.2018 17:30:27
 
Не понял вопроса. Так ведь просматривает - вот вижу написано
Код
If Cells(i, 14).Value = "ФАКТ" Then
 
Цитата
vadik-ceo написал:
Таким образом?
Читаем оригинал. Затем об использовании имен в макросах.
Владимир
 
Цитата
Hugo написал:
Не понял вопроса. Так ведь просматривает - вот вижу написано Код ? 1If Cells(i, 14).Value = "ФАКТ" Then
Если поставить, например, в столбцах 13 и 14 "янв" и "факт" где-нибудь в серединной строке, не в начале диапазона, то он ее не вырезает и не вставляет.
 
Ну я задачу по коду не вычитывал, зачем...
Если нужно перенести все - может в цикле пробежаться по 13 и 14 столбцам в CR2, собрать в union строки, и сразу все скопом скопировать/удалить.
Делать желания нет, занят.
 
Hugo,
Я нашел, кажется, проблему: у меня есть активный макрос на листе, который срабатывает при изменении некоторых ячеек (через события). Данный макрос на вырезание "задевает" их.
Подскажите пожалуйста, в таком случае есть ли возможность остановить в моем коде на вырезание работу активного макроса на листе?
 
Цитата
Hugo написал:
Ну я задачу по коду не вычитывал, зачем...Если нужно перенести все - может в цикле пробежаться по 13 и 14 столбцам в CR2, собрать в union строки, и сразу все скопом скопировать/удалить.Делать желания нет, занят.
Спасибо за наводку, обязательно чекну. Была идея все в один так сказать буфер скопировать, но не имел представления даже, через что это делать. Попробую!
 
Цитата
vadik-ceo написал:
есть ли возможность остановить в моем коде на вырезание работу активного макроса на листе?
Код
application.enableevents=false
на время работы, потом верните назад.
 
Цитата
vadik-ceo написал:
все в один так сказать буфер скопировать
- если не использовать union, то как вариант можно собрать коллекцию номеров строк, затем переносить. Только если по одной - то переносите циклом снизу вверх! Но собьётся порядок.
Или так - копировать можно циклом сверху вниз (сразу как кладёте номер строки в коллекцию), а затем удалить циклом снизу вверх.
Изменено: Hugo - 30.03.2018 18:21:14
Страницы: 1
Наверх