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

Вход

Регистрация

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

 

= Мир MS Excel/Автоматическое добавление строк - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Автоматическое добавление строк
zaytsev-msk-rosah Дата: Среда, 04.12.2024, 22:11 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

2016
Доброго времени суток уважаемые форумчане! В макросах я, увы, полный ноль, а задачка вероятно именно для них. В похожих темах на этом и других форумах подходящего для себя решения не нашел.
Есть шаблон сметы материала и проведение работ. Нужно, чтобы при заполнении любой из ячеек в столбцах "Наименование материала", "Единица", "Кол-во" или "Цена за ед. товара" ниже добавлялась строка с такими же формулами и форматированием, как верхняя. В прикрепленном файле на Лист1 собственно шаблон сметы с формулами в первой строке, на Лист 2 - добавляется вторая строка при заполнении данных в первой.
Важно, чтобы макрос работал только в области сметы на материалы (условия не затрагивали изменения в других частях листа).
Буду крайне благодарен за помощь в решении.
К сообщению приложен файл: smeta_na_ehlektrotekhnicheskie.xlsx (21.2 Kb)


FZ
 
Ответить
СообщениеДоброго времени суток уважаемые форумчане! В макросах я, увы, полный ноль, а задачка вероятно именно для них. В похожих темах на этом и других форумах подходящего для себя решения не нашел.
Есть шаблон сметы материала и проведение работ. Нужно, чтобы при заполнении любой из ячеек в столбцах "Наименование материала", "Единица", "Кол-во" или "Цена за ед. товара" ниже добавлялась строка с такими же формулами и форматированием, как верхняя. В прикрепленном файле на Лист1 собственно шаблон сметы с формулами в первой строке, на Лист 2 - добавляется вторая строка при заполнении данных в первой.
Важно, чтобы макрос работал только в области сметы на материалы (условия не затрагивали изменения в других частях листа).
Буду крайне благодарен за помощь в решении.

Автор - zaytsev-msk-rosah
Дата добавления - 04.12.2024 в 22:11
Nic70y Дата: Четверг, 05.12.2024, 09:05 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 9028
Репутация: 2374 ±
Замечаний: 0% ±

Excel 2010
макрос в модуле книги
[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Application.ScreenUpdating = False  'отключение обновления экрана
    Application.EnableEvents = False    'отключение событий
    a = Target.Row      'строка изменяемой ячейки
    b = Target.Column   'столбец изменяемой ячейки
    'если строка > 3 и столбец >1<6, т.е. от Наименование материала до Цена за ед. товара
    If a > 3 And b > 1 And b < 6 Then
        c = Range("a" & a - 1).Value        'значение ячейки столбца A, выше на 1 строку
        If IsNumeric(c) = False Then c = 0  'если значение не число, приравниваем к 0
        d = a - c - 2 'из строки вычетаем № п/п и 2, что бы получить строку, где Смета материалов
        'если это радел Смета материалов, тогда
        If Range("a" & d).Value = "Смета материалов" Then
            e = Range("a" & a + 1).Value                        '№п/п ниже строки
            f = Application.CountA(Range("b" & a & ":e" & a))   'кол-во заполненных
            'если ниже нет №п/п и есть хотя бы 1 заполненная ячейка в вводимой строке, тогда
            If e = "" And f > 0 Then
                Rows(a + 1).Insert Shift:=xlDown 'добавляем строку
                'формулы
                Range("a" & a & ":a" & a + 1).FormulaR1C1 = "=IF(OR(RC[1]<>"""",RC[2]<>"""",RC[3]<>"""",RC[4]<>""""),ROW()-3,"""")"
                Range("f" & a & ":f" & a + 1).FormulaR1C1 = "=IF(OR(RC[-4]<>"""",RC[-3]<>"""",RC[-2]<>"""",RC[-1]<>""""),RC[-2]*RC[-1],"""")"
            End If
        End If
    End If
    Application.ScreenUpdating = True   'включение обновления экрана
    Application.EnableEvents = True     'включение событий
End Sub
[/vba]
К сообщению приложен файл: 4798916.xlsm (27.8 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Четверг, 05.12.2024, 09:08
 
Ответить
Сообщениемакрос в модуле книги
[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Application.ScreenUpdating = False  'отключение обновления экрана
    Application.EnableEvents = False    'отключение событий
    a = Target.Row      'строка изменяемой ячейки
    b = Target.Column   'столбец изменяемой ячейки
    'если строка > 3 и столбец >1<6, т.е. от Наименование материала до Цена за ед. товара
    If a > 3 And b > 1 And b < 6 Then
        c = Range("a" & a - 1).Value        'значение ячейки столбца A, выше на 1 строку
        If IsNumeric(c) = False Then c = 0  'если значение не число, приравниваем к 0
        d = a - c - 2 'из строки вычетаем № п/п и 2, что бы получить строку, где Смета материалов
        'если это радел Смета материалов, тогда
        If Range("a" & d).Value = "Смета материалов" Then
            e = Range("a" & a + 1).Value                        '№п/п ниже строки
            f = Application.CountA(Range("b" & a & ":e" & a))   'кол-во заполненных
            'если ниже нет №п/п и есть хотя бы 1 заполненная ячейка в вводимой строке, тогда
            If e = "" And f > 0 Then
                Rows(a + 1).Insert Shift:=xlDown 'добавляем строку
                'формулы
                Range("a" & a & ":a" & a + 1).FormulaR1C1 = "=IF(OR(RC[1]<>"""",RC[2]<>"""",RC[3]<>"""",RC[4]<>""""),ROW()-3,"""")"
                Range("f" & a & ":f" & a + 1).FormulaR1C1 = "=IF(OR(RC[-4]<>"""",RC[-3]<>"""",RC[-2]<>"""",RC[-1]<>""""),RC[-2]*RC[-1],"""")"
            End If
        End If
    End If
    Application.ScreenUpdating = True   'включение обновления экрана
    Application.EnableEvents = True     'включение событий
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 05.12.2024 в 09:05
zaytsev-msk-rosah Дата: Суббота, 07.12.2024, 10:37 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

2016
Nic70y, Огромное спасибо! Все работает именно так как нужно! Вы волшебник!


FZ
 
Ответить
СообщениеNic70y, Огромное спасибо! Все работает именно так как нужно! Вы волшебник!

Автор - zaytsev-msk-rosah
Дата добавления - 07.12.2024 в 10:37
  • Страница 1 из 1
  • 1
Поиск:

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