Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2018, 19:31   #1
Semenson
 
Регистрация: 25.03.2018
Сообщений: 7
По умолчанию Вставка и удаление строк с сохранением формул

Здравствуйте. Помогите , пожалуйста, новичку написать макрос. Надо вставлять и удалять строки так , чтобы в ячейках таблицы сохранялись формулы.
Проблема в том, что формула рассчитывает значения с нарастающим итогом (т.е. , учитывая значение верхней ячейки). В моей реализации макроса при вставке сохраняется ссылка на верхнюю ячейку без учета вставленной строки, а при удалении - выдается ошибка "неверная ссылка". Иллюстрация - в приложенном файле: попробуйте поудалять и повставлять строки. Спасибо.
Вложения
Тип файла: xls Пример.xls (40.5 Кб, 19 просмотров)
Semenson вне форума Ответить с цитированием
Старый 25.03.2018, 20:10   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

напишите в С3
Код:
=СУММ(ИНДЕКС(C:C;СТРОКА()-1))+A3-B3
тяните эту ячейку вниз по столбцу, а теперь удаляйте / добавляйте строки
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 26.03.2018, 08:49   #3
Semenson
 
Регистрация: 25.03.2018
Сообщений: 7
По умолчанию

Все работает, огромное Вам спасибо
Semenson вне форума Ответить с цитированием
Старый 26.03.2018, 11:29   #4
Semenson
 
Регистрация: 25.03.2018
Сообщений: 7
По умолчанию

Здравствуйте, Игорь.
Простите за беспокойство, не подскажете, почему действие этого макроса распространяется на все листы книги: если я вставляю или удаляю строку на главном рабочем листе, то и на всех листах книги вставляется или удаляется строка с таким же номером ?
Код:
Private Sub CommandButton1_Click()
Dim LastRow As Long, wsh As Worksheet, rng As Range
    
   
    
    
    With ThisWorkbook.Worksheets(1)
         LastRow = ActiveCell.Row
    End With
    
 If Application.Intersect(ActiveCell, ActiveSheet.UsedRange) Is Nothing _
        Or ActiveCell.Row < 6 Then
            MsgBox "    Àêòèâíàÿ ÿ÷åéêà âíå òàáëèöû"
    Else
    
    For Each wsh In ThisWorkbook.Worksheets
        If wsh.Index <= 6 Then
            wsh.Rows(LastRow + 1).Insert Shift:=xlDown
            wsh.Rows(LastRow).Copy wsh.Rows(LastRow + 1)
            On Error Resume Next
            Set rng = wsh.Rows(LastRow + 1).SpecialCells(xlCellTypeConstants)
            On Error GoTo 0
            If Not rng Is Nothing Then rng.ClearContents
            Set rng = Nothing
        End If
    Next

End If


End Sub
Спасибо большое заранее.

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 26.03.2018 в 11:42.
Semenson вне форума Ответить с цитированием
Старый 26.03.2018, 11:43   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Semenson Посмотреть сообщение
Почему действие этого макроса распространяется на все листы книги
потому что так написано в макросе:

Цитата:
Сообщение от Semenson Посмотреть сообщение
Код:
For Each wsh In ThisWorkbook.Worksheets
цикл выполняется для всех листов в книге.


Цитата:
Сообщение от Semenson Посмотреть сообщение
на все листы книги
и, кстати, не на все листы, а только на первые 6:

Цитата:
Сообщение от Semenson Посмотреть сообщение
Код:
If wsh.Index <= 6 Then
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.03.2018, 11:45   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Semenson Посмотреть сообщение
MsgBox " Àêòèâíàÿ ÿ÷åéêà âíå òàáëèöû"
чтобы не было такого безобразия, перед тем как скопировать текст в буфер обмена, попробуйте включить РУССКУЮ раскладку на клавиатуре.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.03.2018, 11:46   #7
Semenson
 
Регистрация: 25.03.2018
Сообщений: 7
По умолчанию

Большое спасибо за ответ
Semenson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка фото с сохранением пропорций и ограничением по длине или ширине odeon16 Microsoft Office Excel 2 10.02.2017 08:33
Вставка строк (с сохранением формулы) со смещением общего итога вниз DIMONRUS Microsoft Office Excel 10 07.08.2013 16:06
Вставка/удаление столбцов и строк в таблицы Kyxac Microsoft Office Excel 0 14.02.2013 11:06
Вставка формул в столбцы faiza Microsoft Office Excel 1 02.10.2009 10:36
Добавить/удалить строку нажатием на кнопку из сохранением формул gleod Microsoft Office Excel 28 23.07.2009 11:20