Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Значение по умолчанию в поле с выпадающим списком - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Значение по умолчанию в поле с выпадающим списком (Макросы/Sub)
Значение по умолчанию в поле с выпадающим списком
Raven2009 Дата: Понедельник, 21.03.2016, 00:44 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 51
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Доброго времени суток, друзья!

Подскажите пожалуйста, есть ли способ решения вопроса? Расскажу по порядку:

1. Есть лист с таблицей, в которую добавляются новые строки со значениями
2. В таблице есть поле Status с подстановочным списком из трех пунктов: Start, Process и Done

Вопрос такой: как сделать так, чтобы после добавления новых строк в таблицу в поле Status автоматически проставлялся статус Start с возможностью последующей замены на любой другой? При этом сразу могут добавляться по несколько строк сразу (из удаленной базы данных access, в которой поля Status нет)
К сообщению приложен файл: Forplan.xls(39Kb)


Сообщение отредактировал Raven2009 - Понедельник, 21.03.2016, 00:47
 
Ответить
СообщениеДоброго времени суток, друзья!

Подскажите пожалуйста, есть ли способ решения вопроса? Расскажу по порядку:

1. Есть лист с таблицей, в которую добавляются новые строки со значениями
2. В таблице есть поле Status с подстановочным списком из трех пунктов: Start, Process и Done

Вопрос такой: как сделать так, чтобы после добавления новых строк в таблицу в поле Status автоматически проставлялся статус Start с возможностью последующей замены на любой другой? При этом сразу могут добавляться по несколько строк сразу (из удаленной базы данных access, в которой поля Status нет)

Автор - Raven2009
Дата добавления - 21.03.2016 в 00:44
al-Ex Дата: Понедельник, 21.03.2016, 01:14 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 149
Репутация: 53 ±
Замечаний: 0% ±

Excel 2010
в поле 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, как водится.
[/vba]
К сообщению приложен файл: Forplan-1-1-.xlsm(23Kb)


Сообщение отредактировал al-Ex - Понедельник, 21.03.2016, 01:47
 
Ответить
Сообщение
в поле 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, как водится.
[/vba]

Автор - al-Ex
Дата добавления - 21.03.2016 в 01:14
StoTisteg Дата: Понедельник, 21.03.2016, 01:23 | Сообщение № 3
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
al-Ex, For забыли закрыть. Ну и Sub тоже...


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал StoTisteg - Понедельник, 21.03.2016, 01:25
 
Ответить
Сообщениеal-Ex, For забыли закрыть. Ну и Sub тоже...

Автор - StoTisteg
Дата добавления - 21.03.2016 в 01:23
StoTisteg Дата: Понедельник, 21.03.2016, 01:26 | Сообщение № 4
Группа: Авторы
Ранг: Ветеран
Сообщений: 541
Репутация: 45 ±
Замечаний: 0% ±

Excel 2010
Теперь End If потеряли :)


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеТеперь End If потеряли :)

Автор - StoTisteg
Дата добавления - 21.03.2016 в 01:26
Wasilich Дата: Понедельник, 21.03.2016, 01:30 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 877
Репутация: 222 ±
Замечаний: 0% ±

2003
А если так: - Вводите формулу
Код
=ЕСЛИ(N3<>"";"Start";"")
Нет записи - нет статуса. Появилась запись - статус "Start". Надо заменить - выбрал со списка.
А вот предложенный макрос автоматом не проставит. :)


Сообщение отредактировал Wasilich - Понедельник, 21.03.2016, 01:32
 
Ответить
СообщениеА если так: - Вводите формулу
Код
=ЕСЛИ(N3<>"";"Start";"")
Нет записи - нет статуса. Появилась запись - статус "Start". Надо заменить - выбрал со списка.
А вот предложенный макрос автоматом не проставит. :)

Автор - Wasilich
Дата добавления - 21.03.2016 в 01:30
al-Ex Дата: Понедельник, 21.03.2016, 01:36 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 149
Репутация: 53 ±
Замечаний: 0% ±

Excel 2010
А вот предложенный макрос автоматом не проставит
А! ну да) еще и кнопку жмакнуть надо. Просто ветка VBA, вот я и нарисовал.
Если на событие листа (например Worksheet_Activate()) назначить, то и автоматом заполнять будет.


Сообщение отредактировал al-Ex - Понедельник, 21.03.2016, 02:05
 
Ответить
Сообщение
А вот предложенный макрос автоматом не проставит
А! ну да) еще и кнопку жмакнуть надо. Просто ветка VBA, вот я и нарисовал.
Если на событие листа (например Worksheet_Activate()) назначить, то и автоматом заполнять будет.

Автор - al-Ex
Дата добавления - 21.03.2016 в 01:36
Raven2009 Дата: Понедельник, 21.03.2016, 08:04 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 51
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Огромное спасибо всем, испытаю все способы)))

Теперь End If потеряли


al-Ex, For забыли закрыть.


End If кажется понятно, где дописывать, а вот For где закрывать, не подскажете??)) Я с кодом пока на вы...(((
 
Ответить
СообщениеОгромное спасибо всем, испытаю все способы)))

Теперь End If потеряли


al-Ex, For забыли закрыть.


End If кажется понятно, где дописывать, а вот For где закрывать, не подскажете??)) Я с кодом пока на вы...(((

Автор - Raven2009
Дата добавления - 21.03.2016 в 08:04
al-Ex Дата: Понедельник, 21.03.2016, 08:41 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 149
Репутация: 53 ±
Замечаний: 0% ±

Excel 2010
End If кажется понятно, где дописывать
Ничё дописывать не надо.))) Просто "товарисч пошутить изволил". Скачай файл там твой пример уже с макросом .
 
Ответить
Сообщение
End If кажется понятно, где дописывать
Ничё дописывать не надо.))) Просто "товарисч пошутить изволил". Скачай файл там твой пример уже с макросом .

Автор - al-Ex
Дата добавления - 21.03.2016 в 08:41
Raven2009 Дата: Понедельник, 21.03.2016, 09:17 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 51
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Ок, извиняюсь, что не понял)) Я уже проверил, все работает отлично))) Огромное спасибо)) Испытаю способы еще
 
Ответить
СообщениеОк, извиняюсь, что не понял)) Я уже проверил, все работает отлично))) Огромное спасибо)) Испытаю способы еще

Автор - Raven2009
Дата добавления - 21.03.2016 в 09:17
Raven2009 Дата: Понедельник, 21.03.2016, 12:13 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 51
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Вопрос теперь к макросу)) Теперь даже пустые строки в таблице обозначаются словом Start. Какое еще условие можно добавить, чтобы это слово проставлялось только при появлении новых строк?

Просто в оригинальном файле таблица идет не с первого поля, а строками ниже. Сейчас попробую разгадать эту хитрость

К сожалению никак не получается. Подскажите пожалуйста. Допустим поле в данном столбце идет со строчки O10. Как сделать так, чтобы Start проставлялся только напротив заполненных строк? Если я меняю в коде P1:P на P11:P10 проставляются Start и даже не заполненные информацией строки ниже.


Сообщение отредактировал Raven2009 - Понедельник, 21.03.2016, 14:04
 
Ответить
СообщениеВопрос теперь к макросу)) Теперь даже пустые строки в таблице обозначаются словом Start. Какое еще условие можно добавить, чтобы это слово проставлялось только при появлении новых строк?

Просто в оригинальном файле таблица идет не с первого поля, а строками ниже. Сейчас попробую разгадать эту хитрость

К сожалению никак не получается. Подскажите пожалуйста. Допустим поле в данном столбце идет со строчки O10. Как сделать так, чтобы Start проставлялся только напротив заполненных строк? Если я меняю в коде P1:P на P11:P10 проставляются Start и даже не заполненные информацией строки ниже.

Автор - Raven2009
Дата добавления - 21.03.2016 в 12:13
Wasilich Дата: Понедельник, 21.03.2016, 14:33 | Сообщение № 11
Группа: Друзья
Ранг: Ветеран
Сообщений: 877
Репутация: 222 ±
Замечаний: 0% ±

2003
Вопрос теперь к макросу
А это кто такой? :D
Теперь даже пустые строки в таблице обозначаются словом Start.
Что же он гад творит. Может покажете его нам вместе с примером.
 
Ответить
Сообщение
Вопрос теперь к макросу
А это кто такой? :D
Теперь даже пустые строки в таблице обозначаются словом Start.
Что же он гад творит. Может покажете его нам вместе с примером.

Автор - Wasilich
Дата добавления - 21.03.2016 в 14:33
Raven2009 Дата: Понедельник, 21.03.2016, 15:38 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 51
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Прикладываю

В другом рабочем файле таблица именно идет не с первой строки, т.к. там еще шапка организации с другими функциями и тп первые несколько строк занимает
К сообщению приложен файл: Forplan-1-1--.xlsm(25Kb)


Сообщение отредактировал Raven2009 - Понедельник, 21.03.2016, 15:45
 
Ответить
СообщениеПрикладываю

В другом рабочем файле таблица именно идет не с первой строки, т.к. там еще шапка организации с другими функциями и тп первые несколько строк занимает

Автор - Raven2009
Дата добавления - 21.03.2016 в 15:38
al-Ex Дата: Понедельник, 21.03.2016, 16:26 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 149
Репутация: 53 ±
Замечаний: 0% ±

Excel 2010
поле в данном столбце идет со строчки O10. Как сделать так, чтобы Start проставлялся только напротив заполненных строк
ВОТ "O5", - это 5я строка в столбце "О" , с нее и начинается обрабатываемый диапазон, можешь например, "О10" поставить тогда с 10й строки да последней заполненной будет работать.
нижняя граница диапазона определяется по заполнению столбца "А"

Теперь даже пустые строки в таблице обозначаются словом Start
Действительно, если встречается пустая ячейка в диапазоне туда и заносится текст "Старт", т-е пустых быть не должно, исходя из первого твоего поста.
В ячейках может быть что угодно, но если встретится пустая ячейка она будет заполнена текстом "Старт"
К сообщению приложен файл: _Forplan-1-1-.xlsm(22Kb)


Сообщение отредактировал al-Ex - Понедельник, 21.03.2016, 16:51
 
Ответить
Сообщение
поле в данном столбце идет со строчки O10. Как сделать так, чтобы Start проставлялся только напротив заполненных строк
ВОТ "O5", - это 5я строка в столбце "О" , с нее и начинается обрабатываемый диапазон, можешь например, "О10" поставить тогда с 10й строки да последней заполненной будет работать.
нижняя граница диапазона определяется по заполнению столбца "А"

Теперь даже пустые строки в таблице обозначаются словом Start
Действительно, если встречается пустая ячейка в диапазоне туда и заносится текст "Старт", т-е пустых быть не должно, исходя из первого твоего поста.
В ячейках может быть что угодно, но если встретится пустая ячейка она будет заполнена текстом "Старт"

Автор - al-Ex
Дата добавления - 21.03.2016 в 16:26
Wasilich Дата: Понедельник, 21.03.2016, 17:47 | Сообщение № 14
Группа: Друзья
Ранг: Ветеран
Сообщений: 877
Репутация: 222 ±
Замечаний: 0% ±

2003
Прикладываю
Это кто ж так намудрил?
[vba]
Код
Set rangeO = Range("O6:O5" & lLastRow)
[/vba]
Результат будет такой
[vba]
Код
Set rangeO = Range("O6:O531")
[/vba]
Исправьте на
[vba]
Код
Set rangeO = Range("O5:O" & lLastRow)
[/vba]
А вообще, я бы так сделал
[vba]
Код
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
[/vba]


Сообщение отредактировал Wasilich - Понедельник, 21.03.2016, 18:53
 
Ответить
Сообщение
Прикладываю
Это кто ж так намудрил?
[vba]
Код
Set rangeO = Range("O6:O5" & lLastRow)
[/vba]
Результат будет такой
[vba]
Код
Set rangeO = Range("O6:O531")
[/vba]
Исправьте на
[vba]
Код
Set rangeO = Range("O5:O" & lLastRow)
[/vba]
А вообще, я бы так сделал
[vba]
Код
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
[/vba]

Автор - Wasilich
Дата добавления - 21.03.2016 в 17:47
Raven2009 Дата: Понедельник, 21.03.2016, 20:41 | Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 51
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Огромное спасибо всем)))) Все отлично получилось по этому коду)))

А вообще, я бы так сделал
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

Автор - Raven2009
Дата добавления - 21.03.2016 в 20:41
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Значение по умолчанию в поле с выпадающим списком (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!