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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2011, 16:06   #1
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию макрос поиск последней незаполненной строки

Нужен макрос который в диапазоне C4:K500 находит последнюю незаполненную строку и выделяет ее цветом
Найденная строка в диапазоне желательно быть выделена
ActiveSheet.Range(Cells(.....), Cells(.......)).Select
Как то так ...
Uralmaster вне форума Ответить с цитированием
Старый 09.02.2011, 16:26   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

что вкладывается в понятие 1-я незаполненная строка?
нет значения в колонке С, D, E, F, G, H, I, J, K или это превая строка в которой незаполнены все эти ячейки?
а после 500-й строки снова могут быть значения?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 09.02.2011, 16:29   #3
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию уточнил

это первая строка в которой незаполнены все эти ячейки

те С4 D4 - заполнены а Е4:K4 незаполнены тогда С4:K4 выделяются

после 500 не значений не будет
Uralmaster вне форума Ответить с цитированием
Старый 09.02.2011, 16:38   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

однако...
читайте внимательно свой последний пост.
строка 4 - это не
Цитата:
первая строка в которой незаполнены все эти ячейки
она не попадает под это определение в ней
Цитата:
С4 D4 - заполнены
повторю вопрос:
что вкладывается в понятие 1-я незаполненная строка?
нет значения в колонке С, D, E, F, G, H, I, J, K или это превая строка в которой незаполнены все эти ячейки?

Вы, видимо, как и я - военный? поэтому говорить надо все медленно и два раза?
удивительно, но на второй вопрос ответ четкий и однозначный, как устав внуренней службы.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 09.02.2011, 16:38   #5
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию

нет значения в колонке С, D, E, F, G, H, I, J, K

поправил

Последний раз редактировалось Uralmaster; 09.02.2011 в 16:43.
Uralmaster вне форума Ответить с цитированием
Старый 09.02.2011, 17:03   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Я так и не понял, а Вы так и не определились, что вам нужно. Ну, да ладно...
Для того, чтобы Выделить 1-ю свободную строку в диапазоне "C4:K500", можно использовать код:
Код:
Sub Main()
    Dim i As Long, x As Range
    For i = 4 To 500
        If Intersect([C:K], Rows(i)).Text = "" Then
            Rows(i).Select: Exit Sub
    End If: Next
End Sub
Для того, чтобы определить следующую, после последней заполненной строкой, можно использовать код:
Код:
Sub Main1()
    Dim i As Long
        For i = 500 To 4 Step -1
            If Intersect([C:K], Rows(i)).Text = "" Then
            Else: Rows(i + 1).Select: Exit Sub
    End If: Next
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 на форуме Ответить с цитированием
Старый 09.02.2011, 17:21   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

или вот такая функция
Код:
Function FirstEmptyC_K() As Long
  Dim r As Long
  FirstEmptyC_K = 0
  For r = 4 To 500
    If Range(Cells(r, 3), Cells(r, 11)).Text = "" Then FirstEmptyC_K = r: Exit Function
  Next
End Function
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 09.02.2011, 19:41   #8
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию

вот так завел сейчас
правда для другого диапазона но смысл тотже
Код:
Sub Main()
    Sub Main()
    Dim i As Long, x As Range
    For i = 8 To 500
        If Intersect([B:G], Rows(i)).Text = "" Then
            Range(Cells(i - 1, 2), Cells(i - 1, 7)).Select: Exit Sub
    End If: Next
End Sub
или так

Код:
Sub Main1()
    Dim i As Long
        For i = 500 To 8 Step -1
            If Intersect([B:G], Rows(i)).Text = "" Then
            Else: Range(Cells(i, 2), Cells(i, 7)).Select: Exit Sub
    End If: Next
End Sub
работает

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

1 случай:пользователь заполняет таблицу - если заполнил так - то выделяется 1-я незаполненная строка

2 случай - если получилось что пользователь заполнил так - то выделяется 1 полностью пустая строка


те в процессе заполнения мб и 1-е и 2-е - один макрос должен выполнять оба условия

Последний раз редактировалось Uralmaster; 09.02.2011 в 22:30.
Uralmaster вне форума Ответить с цитированием
Старый 09.02.2011, 20:30   #9
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

А то, что в предыдущей строке заполнены не все ячейки?
Если это правильно, то сколько ячеек в предыдущей строке может быть не заполнено?
Просто если не заполнено 5 ячеек, то последняя строка перерождается в предпоследнюю.
Вопрос и пример поставлены некорректно!
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 09.02.2011, 22:15   #10
Uralmaster
Форумчанин
 
Регистрация: 21.01.2011
Сообщений: 118
По умолчанию

сорри сейчас скрин поменяю - торопился
Uralmaster вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перенести значение последней заполненной строки Jazz1200 Microsoft Office Excel 4 12.12.2010 17:11
Заполнение последней строки StringGrid нулями. Asblue Помощь студентам 2 01.11.2010 15:05
Добавление в TMemo, последней строки из TStringList OPF_Nik Помощь студентам 3 31.01.2010 17:35
Выделение цветом последней строки DBGrig Yura_S Помощь студентам 2 28.10.2009 08:35
Поиск последней записи в определенной строке Maxx Microsoft Office Excel 5 04.03.2009 14:01