Подскажите пожалуйста, есть ли способ решения вопроса? Расскажу по порядку:
1. Есть лист с таблицей, в которую добавляются новые строки со значениями 2. В таблице есть поле Status с подстановочным списком из трех пунктов: Start, Process и Done
Вопрос такой: как сделать так, чтобы после добавления новых строк в таблицу в поле Status автоматически проставлялся статус Start с возможностью последующей замены на любой другой? При этом сразу могут добавляться по несколько строк сразу (из удаленной базы данных access, в которой поля Status нет)
Доброго времени суток, друзья!
Подскажите пожалуйста, есть ли способ решения вопроса? Расскажу по порядку:
1. Есть лист с таблицей, в которую добавляются новые строки со значениями 2. В таблице есть поле Status с подстановочным списком из трех пунктов: Start, Process и Done
Вопрос такой: как сделать так, чтобы после добавления новых строк в таблицу в поле Status автоматически проставлялся статус Start с возможностью последующей замены на любой другой? При этом сразу могут добавляться по несколько строк сразу (из удаленной базы данных access, в которой поля Status нет)Raven2009
в поле Status автоматически проставлялся статус Start
[vba]
Код
Sub Макрос1() Dim rangeO As Range Dim lLastRow As Long lLastRow = Cells(Rows.Count, 1).End(xlUp).Row ' определяем нижнюю строку таблицы (по столбцу "А") Set rangeO = Range("O1:O" & lLastRow) ' определяем столбец статусов For Each O In rangeO ' в цикле просматриваем каждую ячейку из столбца статусов If O.Value = vbNullString Then O.Value = "Start" 'если пустая прописываем текст "Start" Next O End Sub ' Ну и gbgtw, как водится.
в поле Status автоматически проставлялся статус Start
[vba]
Код
Sub Макрос1() Dim rangeO As Range Dim lLastRow As Long lLastRow = Cells(Rows.Count, 1).End(xlUp).Row ' определяем нижнюю строку таблицы (по столбцу "А") Set rangeO = Range("O1:O" & lLastRow) ' определяем столбец статусов For Each O In rangeO ' в цикле просматриваем каждую ячейку из столбца статусов If O.Value = vbNullString Then O.Value = "Start" 'если пустая прописываем текст "Start" Next O End Sub ' Ну и gbgtw, как водится.
Нет записи - нет статуса. Появилась запись - статус "Start". Надо заменить - выбрал со списка. А вот предложенный макрос автоматом не проставит.
А если так: - Вводите формулу
Код
=ЕСЛИ(N3<>"";"Start";"")
Нет записи - нет статуса. Появилась запись - статус "Start". Надо заменить - выбрал со списка. А вот предложенный макрос автоматом не проставит. Wasilich
Сообщение отредактировал Wasilich - Понедельник, 21.03.2016, 01:32
А! ну да) еще и кнопку жмакнуть надо. Просто ветка VBA, вот я и нарисовал. Если на событие листа (например Worksheet_Activate()) назначить, то и автоматом заполнять будет.
А! ну да) еще и кнопку жмакнуть надо. Просто ветка VBA, вот я и нарисовал. Если на событие листа (например Worksheet_Activate()) назначить, то и автоматом заполнять будет.al-Ex
Сообщение отредактировал al-Ex - Понедельник, 21.03.2016, 02:05
Вопрос теперь к макросу)) Теперь даже пустые строки в таблице обозначаются словом Start. Какое еще условие можно добавить, чтобы это слово проставлялось только при появлении новых строк?
Просто в оригинальном файле таблица идет не с первого поля, а строками ниже. Сейчас попробую разгадать эту хитрость
К сожалению никак не получается. Подскажите пожалуйста. Допустим поле в данном столбце идет со строчки O10. Как сделать так, чтобы Start проставлялся только напротив заполненных строк? Если я меняю в коде P1:P на P11:P10 проставляются Start и даже не заполненные информацией строки ниже.
Вопрос теперь к макросу)) Теперь даже пустые строки в таблице обозначаются словом Start. Какое еще условие можно добавить, чтобы это слово проставлялось только при появлении новых строк?
Просто в оригинальном файле таблица идет не с первого поля, а строками ниже. Сейчас попробую разгадать эту хитрость
К сожалению никак не получается. Подскажите пожалуйста. Допустим поле в данном столбце идет со строчки O10. Как сделать так, чтобы Start проставлялся только напротив заполненных строк? Если я меняю в коде P1:P на P11:P10 проставляются Start и даже не заполненные информацией строки ниже.Raven2009
Сообщение отредактировал Raven2009 - Понедельник, 21.03.2016, 14:04
В другом рабочем файле таблица именно идет не с первой строки, т.к. там еще шапка организации с другими функциями и тп первые несколько строк занимает
Прикладываю
В другом рабочем файле таблица именно идет не с первой строки, т.к. там еще шапка организации с другими функциями и тп первые несколько строк занимаетRaven2009
поле в данном столбце идет со строчки O10. Как сделать так, чтобы Start проставлялся только напротив заполненных строк
[vba]
Код
Sub Макрос1() Dim rangeO As Range Dim lLastRow As Long lLastRow = Cells(Rows.Count, 1).End(xlUp).Row ' определяем нижнюю строку таблицы (по столбцу "А") Set rangeO = Range("O5:O" & lLastRow) ' определяем столбец статусов ВОТ "O5"это 5я строка в столбце "О" с нее и начинается диапазон For Each O In rangeO ' в цикле просматриваем каждую ячейку из столбца статусов If O.Value = vbNullString Then O.Value = "Start" 'если пустая прописываем текст "Start" Next O End Sub ' Ну и gbgtw, как водится.
[/vba]
ВОТ "O5", - это 5я строка в столбце "О" , с нее и начинается обрабатываемый диапазон, можешь например, "О10" поставить тогда с 10й строки да последней заполненной будет работать. нижняя граница диапазона определяется по заполнению столбца "А"
Теперь даже пустые строки в таблице обозначаются словом Start
Действительно, если встречается пустая ячейка в диапазоне туда и заносится текст "Старт", т-е пустых быть не должно, исходя из первого твоего поста. В ячейках может быть что угодно, но если встретится пустая ячейка она будет заполнена текстом "Старт"
поле в данном столбце идет со строчки O10. Как сделать так, чтобы Start проставлялся только напротив заполненных строк
[vba]
Код
Sub Макрос1() Dim rangeO As Range Dim lLastRow As Long lLastRow = Cells(Rows.Count, 1).End(xlUp).Row ' определяем нижнюю строку таблицы (по столбцу "А") Set rangeO = Range("O5:O" & lLastRow) ' определяем столбец статусов ВОТ "O5"это 5я строка в столбце "О" с нее и начинается диапазон For Each O In rangeO ' в цикле просматриваем каждую ячейку из столбца статусов If O.Value = vbNullString Then O.Value = "Start" 'если пустая прописываем текст "Start" Next O End Sub ' Ну и gbgtw, как водится.
[/vba]
ВОТ "O5", - это 5я строка в столбце "О" , с нее и начинается обрабатываемый диапазон, можешь например, "О10" поставить тогда с 10й строки да последней заполненной будет работать. нижняя граница диапазона определяется по заполнению столбца "А"
Теперь даже пустые строки в таблице обозначаются словом Start
Действительно, если встречается пустая ячейка в диапазоне туда и заносится текст "Старт", т-е пустых быть не должно, исходя из первого твоего поста. В ячейках может быть что угодно, но если встретится пустая ячейка она будет заполнена текстом "Старт"al-Ex
Sub www() Dim O&, i& O = Range("O" & Rows.Count).End(xlUp).Row + 1 For i = O To Range("N" & Rows.Count).End(xlUp).Row Cells(i, "O") = "Start" Next End Sub
Sub www() Dim O&, i& O = Range("O" & Rows.Count).End(xlUp).Row + 1 For i = O To Range("N" & Rows.Count).End(xlUp).Row Cells(i, "O") = "Start" Next End Sub
А вообще, я бы так сделал Sub www() Dim O&, i& O = Range("O" & Rows.Count).End(xlUp).Row + 1 For i = O To Range("N" & Rows.Count).End(xlUp).Row Cells(i, "O") = "Start" Next End Sub
Огромное спасибо всем)))) Все отлично получилось по этому коду)))
А вообще, я бы так сделал Sub www() Dim O&, i& O = Range("O" & Rows.Count).End(xlUp).Row + 1 For i = O To Range("N" & Rows.Count).End(xlUp).Row Cells(i, "O") = "Start" Next End Sub