Добрый день. К сожалению, не смог найти ответа на свой вопрос. Прошу, помогите.
Задача: суть приложенного файла - анкета на подготовку договора. Сотрудник продаж должен вписать необходимые значения и направить файл сотруднику поддержки. В анкете есть значения: DID (ячейка D18), Инстал и Абон за DID (ячейка F22, F23). Бывает ситуации, когда сотрудник может продать не один DID, а более, соответственно вариантов Инстал и Абон может быть несколько. Как сделать так, чтобы при нажатии на кнопку "Добавить DID" под строками 18,22 и 23 добавлялись еще одни с тем же форматированием, а в соответствующих ячейках столбца С появлялись надписи "DID #2", "ИНСТАЛ: за DID 2 и "АБОН: за DID 2".
Буду признателен за любую подсказку.
Добрый день. К сожалению, не смог найти ответа на свой вопрос. Прошу, помогите.
Задача: суть приложенного файла - анкета на подготовку договора. Сотрудник продаж должен вписать необходимые значения и направить файл сотруднику поддержки. В анкете есть значения: DID (ячейка D18), Инстал и Абон за DID (ячейка F22, F23). Бывает ситуации, когда сотрудник может продать не один DID, а более, соответственно вариантов Инстал и Абон может быть несколько. Как сделать так, чтобы при нажатии на кнопку "Добавить DID" под строками 18,22 и 23 добавлялись еще одни с тем же форматированием, а в соответствующих ячейках столбца С появлялись надписи "DID #2", "ИНСТАЛ: за DID 2 и "АБОН: за DID 2".
Ну если так. Вообще говоря, при том, что есть какие-то настройки (кто-то ведь их делал), не совсем понятно, в чем сложность. Находим строки и номер последнего DID, после найденных строк вставляем пустые строки, копируем в них предыдущие, заменяем номер DID на +1. Удаление аналогично. Возможно, при вставке / удалении строк возникнут нюансы с кнопками и их придется переместить.
Ну если так. Вообще говоря, при том, что есть какие-то настройки (кто-то ведь их делал), не совсем понятно, в чем сложность. Находим строки и номер последнего DID, после найденных строк вставляем пустые строки, копируем в них предыдущие, заменяем номер DID на +1. Удаление аналогично. Возможно, при вставке / удалении строк возникнут нюансы с кнопками и их придется переместить.alex1248
skype alex12481632 Qiwi +79276708519
Сообщение отредактировал alex1248 - Вторник, 21.10.2014, 19:39
В моем примере я вставляю под строкой DID новую заполняю строку 19 значениями из 18. Т.е. не лучшее решение - новые строки должны идти последовательно друг под другом.
Необходимо не просто продублировать первую строку - в дипозоне нужно найти последнюю строку, вставить под ней новую и заполнить значениями из строки сверху. Сложности у меня возникают с поиском последней строки.
В моем примере я вставляю под строкой DID новую заполняю строку 19 значениями из 18. Т.е. не лучшее решение - новые строки должны идти последовательно друг под другом.
Необходимо не просто продублировать первую строку - в дипозоне нужно найти последнюю строку, вставить под ней новую и заполнить значениями из строки сверху. Сложности у меня возникают с поиском последней строки.yakovlevra
Сообщение отредактировал yakovlevra - Вторник, 21.10.2014, 20:22
Необходимо не просто продублировать первую строку - в дипозоне нужно найти последнюю строку, вставить под ней новую и заполнить значениями из строки сверху. Сложности у меня возникают с поиском последней строки.
Например, сначала определяем номер последней заполненной строки в нужном столбце, можно так (для столбца С) [vba]
Код
lLastRow = Cells(Rows.Count, "C").End(xlUp).Row
[/vba] От нее циклом вверх по столбцу С ищем ячейку, содержащую, например, "Тип линий". На 2 строки выше должна быть последняя "DID № <>", там же и номер последнего DID.
Необходимо не просто продублировать первую строку - в дипозоне нужно найти последнюю строку, вставить под ней новую и заполнить значениями из строки сверху. Сложности у меня возникают с поиском последней строки.
Например, сначала определяем номер последней заполненной строки в нужном столбце, можно так (для столбца С) [vba]
Код
lLastRow = Cells(Rows.Count, "C").End(xlUp).Row
[/vba] От нее циклом вверх по столбцу С ищем ячейку, содержащую, например, "Тип линий". На 2 строки выше должна быть последняя "DID № <>", там же и номер последнего DID.alex1248
skype alex12481632 Qiwi +79276708519
Сообщение отредактировал alex1248 - Вторник, 21.10.2014, 20:19
alex1248, спасибо. Думал об этом. Однако, при использовании такого решения (поиск по столбцу и на 2 строки выше) возникают сложности с работой со строками 22 и 23 (ИНСТАЛ, АБОН) - так как они тоже будут копироваться.
Пришла мысль, что мою задачу помогут решить именованные диапазоны. Есть ли способ искать последнюю строку в именованном диапазоне?
Обновил файл-пример. Строку 18 сделал именованным диапазоном "VOICE_900_001_DID", строки 22 и 23 "VOICE_900_001_INST" и "VOICE_900_001_ABON" соответственно.
alex1248, спасибо. Думал об этом. Однако, при использовании такого решения (поиск по столбцу и на 2 строки выше) возникают сложности с работой со строками 22 и 23 (ИНСТАЛ, АБОН) - так как они тоже будут копироваться.
Пришла мысль, что мою задачу помогут решить именованные диапазоны. Есть ли способ искать последнюю строку в именованном диапазоне?
Обновил файл-пример. Строку 18 сделал именованным диапазоном "VOICE_900_001_DID", строки 22 и 23 "VOICE_900_001_INST" и "VOICE_900_001_ABON" соответственно.yakovlevra
возникают сложности с работой со строками 22 и 23 (ИНСТАЛ, АБОН) - так как они тоже будут копироваться.
В чем сложность? Если сами слова ИНСТАЛ и АБОН будут копировать вместе со строками, находите их аналогично, либо расчетом. Если они копироваться не будут, то последний АБОН на 2 строки выше "Минимальный счет", а последний ИНСТАЛ на 1 строку выше ячейки, содержащей "АБОН".
возникают сложности с работой со строками 22 и 23 (ИНСТАЛ, АБОН) - так как они тоже будут копироваться.
В чем сложность? Если сами слова ИНСТАЛ и АБОН будут копировать вместе со строками, находите их аналогично, либо расчетом. Если они копироваться не будут, то последний АБОН на 2 строки выше "Минимальный счет", а последний ИНСТАЛ на 1 строку выше ячейки, содержащей "АБОН".alex1248
Если сами слова ИНСТАЛ и АБОН будут копировать вместе со строками, находите их аналогично, либо расчетом. Если они копироваться не будут, то последний АБОН на 2 строки выше "Минимальный счет", а последний ИНСТАЛ на 1 строку выше ячейки, содержащей "АБОН".
Если сами слова ИНСТАЛ и АБОН будут копировать вместе со строками, находите их аналогично, либо расчетом. Если они копироваться не будут, то последний АБОН на 2 строки выше "Минимальный счет", а последний ИНСТАЛ на 1 строку выше ячейки, содержащей "АБОН".
Вроде бы, то же самое, что и с "Тип линии". alex1248
_Boroda_, большое спасибо. Но немного не подходит под мою задачу - нельзя указывать точные значения номеров строк, так как они могут менятся. Так если добавить строку сверху строки DID - макрос ломается.
_Boroda_, большое спасибо. Но немного не подходит под мою задачу - нельзя указывать точные значения номеров строк, так как они могут менятся. Так если добавить строку сверху строки DID - макрос ломается.yakovlevra
Сообщение отредактировал yakovlevra - Вторник, 21.10.2014, 23:42
Добавлять диды. Немного доработать с форматированием. По аналогии и остальные [vba]
Код
Private Sub CommandButton1_Click() Dim Rx As Range, RN As Range, F, R, N As Integer F = "Тип линий" Set RN = Columns(3): Set Rx = RN.Find(F): R = Rx.Row N = CInt(VBA.Replace(VBA.Replace(Cells(R - 2, 3), "DID №", ""), ":", "")) Rows(R - 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Cells(R - 1, 3) = "DID №" & N + 1 & ":" End Sub
[/vba]
Добавлять диды. Немного доработать с форматированием. По аналогии и остальные [vba]
Код
Private Sub CommandButton1_Click() Dim Rx As Range, RN As Range, F, R, N As Integer F = "Тип линий" Set RN = Columns(3): Set Rx = RN.Find(F): R = Rx.Row N = CInt(VBA.Replace(VBA.Replace(Cells(R - 2, 3), "DID №", ""), ":", "")) Rows(R - 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Cells(R - 1, 3) = "DID №" & N + 1 & ":" End Sub