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

Вход

Регистрация

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

 

= Мир MS Excel/Добавление строк с сохранением формул - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Добавление строк с сохранением формул
Cherry_June Дата: Вторник, 14.11.2017, 07:57 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте уважаемы знатоки!
Столкнулась с очень необычной для меня проблемой:
на первом листе книги сделала макрос, чтобы добавлял строки в таблицу с сохранением формул и очисткой значений, но не формул. Все работает как нужно.
Хотела сделать похожий макрос на второй лист, но с условием, что если количество строк в таблицах совпадает, то очищение не проводиться, если же на 2 листе строк в таблице больше, то все последующие очищаются от значений, но не от формул.
Проблемы возникли откуда не ждали, макрос очень криво добавляет строки, почему то вверх, соответственно при этом пересчитывая формулы не так как мне надо. Я попробовала уже все, почитала форумы, ну не работает как нужно на втором листе! Помогите!
К сообщению приложен файл: 9641044.xlsm (26.2 Kb)
 
Ответить
СообщениеЗдравствуйте уважаемы знатоки!
Столкнулась с очень необычной для меня проблемой:
на первом листе книги сделала макрос, чтобы добавлял строки в таблицу с сохранением формул и очисткой значений, но не формул. Все работает как нужно.
Хотела сделать похожий макрос на второй лист, но с условием, что если количество строк в таблицах совпадает, то очищение не проводиться, если же на 2 листе строк в таблице больше, то все последующие очищаются от значений, но не от формул.
Проблемы возникли откуда не ждали, макрос очень криво добавляет строки, почему то вверх, соответственно при этом пересчитывая формулы не так как мне надо. Я попробовала уже все, почитала форумы, ну не работает как нужно на втором листе! Помогите!

Автор - Cherry_June
Дата добавления - 14.11.2017 в 07:57
sboy Дата: Вторник, 14.11.2017, 11:02 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
макрос очень криво добавляет строки, почему то вверх

исправил. Про очищение не понял, т.к. там только формулы...
[vba]
Код
Sub Кнопка4_Щелчок()
'With ActiveSheet
        LastRow = Cells(Rows.Count, 10).End(xlUp).Row
        Rows(LastRow).Copy
        Rows(LastRow + 1).Insert Shift:=xlDown
        Rows(LastRow + 1).PasteSpecial Paste:=xlPasteFormulas
'End With
   Application.CutCopyMode = False
End Sub
[/vba]
К сообщению приложен файл: 9488802.xlsm (29.7 Kb)


Яндекс: 410016850021169
 
Ответить
СообщениеДобрый день.
макрос очень криво добавляет строки, почему то вверх

исправил. Про очищение не понял, т.к. там только формулы...
[vba]
Код
Sub Кнопка4_Щелчок()
'With ActiveSheet
        LastRow = Cells(Rows.Count, 10).End(xlUp).Row
        Rows(LastRow).Copy
        Rows(LastRow + 1).Insert Shift:=xlDown
        Rows(LastRow + 1).PasteSpecial Paste:=xlPasteFormulas
'End With
   Application.CutCopyMode = False
End Sub
[/vba]

Автор - sboy
Дата добавления - 14.11.2017 в 11:02
Cherry_June Дата: Вторник, 14.11.2017, 11:09 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
исправил. Про очищение не понял, т.к. там только формулы...

Огромное спасибо за помощь!
Остальное, что необходимо сама доделаю) Буду постигать науку макросов))
 
Ответить
Сообщение
исправил. Про очищение не понял, т.к. там только формулы...

Огромное спасибо за помощь!
Остальное, что необходимо сама доделаю) Буду постигать науку макросов))

Автор - Cherry_June
Дата добавления - 14.11.2017 в 11:09
Cherry_June Дата: Вторник, 14.11.2017, 13:42 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Попробовала доделать свою задумку и что-то опять не хватает((((
Мне нужно, чтобы после добавления новой строки на лист "Учетка" макрос сравнивал кол-во заполняемых исполнителем строк в таблицах на листах Наряд и Учетка, и если во втором случае таблица больше, то строка становилась пустой (без данных, но с формулами).
Потому что если просто добавить строку, заполнить ее, а потом добавить еще одну, то все содержимое скопируется, чего не должно быть

[vba]
Код

Sub Кнопка4_Щелчок()

With ActiveSheet
        LastRow = Cells(Rows.Count, 10).End(xlUp).Row
        Rows(LastRow).Copy
        Rows(LastRow + 1).Insert Shift:=xlDown
        Rows(LastRow + 1).PasteSpecial Paste:=xlPasteFormulas
End With
   Application.CutCopyMode = False
   
  With ActiveWorkbook.Sheets("Наряд")
    Z = .Cells(Rows.Count, 9).End(xlUp).Row
    Z = Z - 13 'кол-во строк в таблице на 1 листе
  End With
  
    x = LastRow - 7 'кол-во строк в таблице на Листе 2
    If x >= Z Then 'если таблица2 больше таблицы1, то необходимо очистить данные в добавленной строке, но не формулы
   x = LastRow + 1
    ActiveSheet.Range("$A$" & x, "$J$" & x).SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents 'тут выдает ошибку, когда доходит до разницы таблиц, но строку пустую добавляет
   End If
  End Sub
[/vba]
 
Ответить
СообщениеПопробовала доделать свою задумку и что-то опять не хватает((((
Мне нужно, чтобы после добавления новой строки на лист "Учетка" макрос сравнивал кол-во заполняемых исполнителем строк в таблицах на листах Наряд и Учетка, и если во втором случае таблица больше, то строка становилась пустой (без данных, но с формулами).
Потому что если просто добавить строку, заполнить ее, а потом добавить еще одну, то все содержимое скопируется, чего не должно быть

[vba]
Код

Sub Кнопка4_Щелчок()

With ActiveSheet
        LastRow = Cells(Rows.Count, 10).End(xlUp).Row
        Rows(LastRow).Copy
        Rows(LastRow + 1).Insert Shift:=xlDown
        Rows(LastRow + 1).PasteSpecial Paste:=xlPasteFormulas
End With
   Application.CutCopyMode = False
   
  With ActiveWorkbook.Sheets("Наряд")
    Z = .Cells(Rows.Count, 9).End(xlUp).Row
    Z = Z - 13 'кол-во строк в таблице на 1 листе
  End With
  
    x = LastRow - 7 'кол-во строк в таблице на Листе 2
    If x >= Z Then 'если таблица2 больше таблицы1, то необходимо очистить данные в добавленной строке, но не формулы
   x = LastRow + 1
    ActiveSheet.Range("$A$" & x, "$J$" & x).SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents 'тут выдает ошибку, когда доходит до разницы таблиц, но строку пустую добавляет
   End If
  End Sub
[/vba]

Автор - Cherry_June
Дата добавления - 14.11.2017 в 13:42
Cherry_June Дата: Вторник, 14.11.2017, 18:18 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Немножко up тему)))
 
Ответить
СообщениеНемножко up тему)))

Автор - Cherry_June
Дата добавления - 14.11.2017 в 18:18
InExSu Дата: Вторник, 14.11.2017, 23:18 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 650
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
Не всё понял, поэтому формально слегка причесал:

[vba]
Код
Sub Кнопка4_Щелчок_InExSu()

    With ActiveSheet
        LastRow = .Cells(.Rows.Count, 10).End(xlUp).Row
        .Rows(LastRow).Copy
        .Rows(LastRow + 1).Insert Shift:=xlDown
        .Rows(LastRow + 1).PasteSpecial Paste:=xlPasteFormulas
    End With
    Application.CutCopyMode = False

    With ActiveWorkbook.Sheets("Наряд")
        Z = .Cells(.Rows.Count, 9).End(xlUp).Row
        Z = Z - 13    'кол-во строк в таблице на 1 листе
    End With

    x = LastRow - 7    'кол-во строк в таблице на Листе 2

    If x >= Z Then    'если таблица2 больше таблицы1, то необходимо очистить данные в добавленной строке, но не формулы
        x = LastRow + 1
        On Error Resume Next 'бывает нужных ячеек нет
        ActiveSheet.Range("A" & x & ":" & "J" & x).SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents         'тут выдает ошибку, когда доходит до разницы таблиц, но строку пустую добавляет
    End If
[/vba]
End Sub


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
 
Ответить
СообщениеНе всё понял, поэтому формально слегка причесал:

[vba]
Код
Sub Кнопка4_Щелчок_InExSu()

    With ActiveSheet
        LastRow = .Cells(.Rows.Count, 10).End(xlUp).Row
        .Rows(LastRow).Copy
        .Rows(LastRow + 1).Insert Shift:=xlDown
        .Rows(LastRow + 1).PasteSpecial Paste:=xlPasteFormulas
    End With
    Application.CutCopyMode = False

    With ActiveWorkbook.Sheets("Наряд")
        Z = .Cells(.Rows.Count, 9).End(xlUp).Row
        Z = Z - 13    'кол-во строк в таблице на 1 листе
    End With

    x = LastRow - 7    'кол-во строк в таблице на Листе 2

    If x >= Z Then    'если таблица2 больше таблицы1, то необходимо очистить данные в добавленной строке, но не формулы
        x = LastRow + 1
        On Error Resume Next 'бывает нужных ячеек нет
        ActiveSheet.Range("A" & x & ":" & "J" & x).SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents         'тут выдает ошибку, когда доходит до разницы таблиц, но строку пустую добавляет
    End If
[/vba]
End Sub

Автор - InExSu
Дата добавления - 14.11.2017 в 23:18
Cherry_June Дата: Среда, 15.11.2017, 09:03 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Работает) благодарствую!
 
Ответить
СообщениеРаботает) благодарствую!

Автор - Cherry_June
Дата добавления - 15.11.2017 в 09:03
  • Страница 1 из 1
  • 1
Поиск:

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