Страницы: 1
RSS
Поиск номера пустой ячейки в столбце, Макрос, VBA
 
День добрый

вопрос такой  
Отсортировал данные и получилось что в конце таблицы есть данные которые нужно удалить (строк всегда разное количество)

суть вопроса найти пустую ячейку в определенном столбце получить ее номер,  выделить диапазон ячеек от столбца А с номером который получили до конца документа и удалить выделенное

пытался сделать так  чтоб получить номер ячейки
Код
 Set myLastCell = ActiveSheet.Columns(3).Find(What:="", LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, _
        MatchCase:=False, SearchFormat:=False)
        
 
Ищите последнюю пустую строку в столбце, например, А
Код
iLastRowA = Cells(Rows.Count, 1).End(xlUp).Row + 1
Затем последнюю строку в диапазоне
Код
iLastRow = Cells.Find("*", [A1], SearchDirection:=xlPrevious).Row
Очищаете лишние строки в диапазоне
Код
Range(Cells(iLastRowA, 1), Cells(iLastRow, 3)).ClearContents
 
iLastRowA = Cells(Rows.Count, 1).End(xlUp).Row + 1 - пустое  через отладчик пишет "empty"
что может быть ?  
 
Может быть Правила прочитаете и выложите пример?
Я сам - дурнее всякого примера! ...
 
для примера, таблица в которой есть пустые строки ,
я сортирую таблицу  нахожу пустую ячейку в 3 столбце

iLastRowA = Cells(Rows.Count, 1).End(xlUp).Row + 1   - что не так  
 
а так?
Код
iLastRowA = Cells(Rows.Count, [COLOR=#ff0000]3[/COLOR]).End(xlUp).Row + 1
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Так и ищите в 3 столбце:
Код
iLastRowA = Cells(Rows.Count, 3).End(xlUp).Row + 1
И оформляйте код тегами, кнопка <...> на панели редактирования.
Я сам - дурнее всякого примера! ...
 
так тоже делал ничего
В примере выбивает ошибку Type Missmathc
 
Цитата
Kyvaldenius написал:
так тоже делал
так да не так. Зачем у Вас set в примере?
Я сам - дурнее всякого примера! ...
 
говорю что кусок кода не работает
Код
iLastRowA = Cells(Rows.Count, 3).End(xlUp).Row + 1





а не то что не ищет не в том столбце
 
А я говорю руки кривые. Кнопку нажать осилите?
Я сам - дурнее всякого примера! ...
 
да спасибо, без set  заработало

правильно понимаю что
Код
iLastRowA = Cells(Rows.Count, 1).End(xlUp).Row + 1
найдет последнюю ячейку в столбце , а не первую  пустую ячейку (ячейка может быть в рамке или были какието данные и удалили)


то есть строка кода находит мне 3115 ячейку
а когда делаю поиск то находится 2152 ячейка она и есть первая пустая  
 
сорян не ту строку привел  
 
У Вас там небось формулы? Так какая ж это пустая?
Я сам - дурнее всякого примера! ...
 
очень логично в переменную назвать
iLastRowA
а потом записать в нее № строки первой пустой ячейки из колонки С (Cells(Rows.Count, 3).End(xlUp).Row + 1)

хотели очистить строки, где в колонке С уже ничего нет, а в колонке А все еще есть данные?
используйте:
Код
  r1 = Cells(Rows.Count, 3).End(xlUp).Row
  r2 = Cells(Rows.Count, 1).End(xlUp).Row
  If r2 > r1 Then Rows(r1 + 1).Resize(r2 - r1).ClearContents
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
дополнил пример  
 
формул нет  
 
код из сообщения №15, оформленній как макрос очистит строки 18,19 и 20 из вашего файла-примера
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Всем спасибо с этой проблемой разобрался

код работает на примере но в действительном файле   всегда r1=r2  соответственно ничего не удаляет
Код
r1 = Cells(Rows.Count, 3).End(xlUp).Row 
 r2 = Cells(Rows.Count, 1).End(xlUp).Row
  If r2 > r1 Then Rows(r1 + 1).Resize(r2 - r1).ClearContents
Код
тут срабатывает, удаляет

но находит не первую пустую а где-то в середине,  то есть удаляет только половину всего чего нужно удалить


iLastRowA = Cells(Rows.Count, 3).End(xlUp).Row + 1
'Затем последнюю строку в диапазоне

iLastRow = Cells.Find("*", [A1], SearchDirection:=xlPrevious).Row
'Очищаете лишние строки в диапазоне

Range(Cells(iLastRowA, 1), Cells(iLastRow, 8).ClearContents



вот этот кусок находит нужный номер ячейки
а дальше уже использую предыдущий код
Код
Columns("C:C").Select
Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
a = ActiveCell.Row
спасибо за помощь !!!)
 
Цитата
но находит не первую пустую а где-то в середине,  то есть удаляет только половину всего чего нужно удалить

iLastRowA = Cells(Rows.Count, 3).End(xlUp).Row + 1
'Затем последнюю строку в диапазоне
iLastRow = Cells.Find("*", [A1], SearchDirection:=xlPrevious).Row
'Очищаете лишние строки в диапазоне
Range(Cells(iLastRowA, 1), Cells(iLastRow, 8).ClearContents
Макрос находит первую пустую ячейку в столбце С и дальше вам надо очистить строки в диапазоне, начиная с этой строки.
В строке кода
Код
'Очищаете лишние строки в диапазоне 
Range(Cells(iLastRowA, 1), Cells(iLastRow, 9).ClearContents
вы пропустили скобку в конце (посмотрите мое сообщение #2)
Код
Range(Cells(iLastRowA, 1), Cells(iLastRow, 9)).ClearContents
Страницы: 1
Наверх