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

Вход

Регистрация

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

 

= Мир MS Excel/Вставка строк без значений - Мир MS Excel

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

Excel 2007
Здравствуйте!
Возник вопрос следующего характера:
Во вложении на Листе ОТ есть кнопка для добавления строк в табличную часть Протокола, точнее строка просто копируется и вставляется, вставляется она с текстом предыдущей, чего хотелось бы избежать. Проблема состоит в том, что ячейки объединены, плюс в некоторых есть формулы, которые необходимо сохранить.
Возможно ли сделать так, что бы строка которая копируется/вставляется была без внесенных значений, но при этом остались формулы??
К сообщению приложен файл: 8790143.xlsb(37Kb)
 
Ответить
СообщениеЗдравствуйте!
Возник вопрос следующего характера:
Во вложении на Листе ОТ есть кнопка для добавления строк в табличную часть Протокола, точнее строка просто копируется и вставляется, вставляется она с текстом предыдущей, чего хотелось бы избежать. Проблема состоит в том, что ячейки объединены, плюс в некоторых есть формулы, которые необходимо сохранить.
Возможно ли сделать так, что бы строка которая копируется/вставляется была без внесенных значений, но при этом остались формулы??

Автор - ProstaK
Дата добавления - 04.08.2017 в 00:26
and_evg Дата: Пятница, 04.08.2017, 06:40 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 232
Репутация: 41 ±
Замечаний: 0% ±

Excel 2007
ProstaK, посмотрите в сторону умных таблиц. при определенных настройках решает вашу задачу без дополнительных макросов
 
Ответить
СообщениеProstaK, посмотрите в сторону умных таблиц. при определенных настройках решает вашу задачу без дополнительных макросов

Автор - and_evg
Дата добавления - 04.08.2017 в 06:40
AndreTM Дата: Пятница, 04.08.2017, 06:56 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 496 ±
Замечаний: 0% ±

2003 & 2010
В "умных таблицах" сложно будет вставлять данные "в середину", да и зачем усложнять?
Даже в имеющемся коде - не хватает только "зачистить получившуюся новую строку от значений, оставив формулы", это одна строчка... Но мы пойдем немного далее - поправим код на несколько более оптимальный :)
[vba]
Код
Sub ДобавлениеСтрокПротокол_ОТ()
    Dim tbl As Range, cell As Range
    
    ' проверим попадание в таблицу
    Set tbl = ActiveCell.CurrentRegion.Cells(1, 1).CurrentRegion
    If tbl.Rows.Count < 3 Then
        Set tbl = Nothing
    Else
        Set tbl = tbl.Offset(2).Resize(tbl.Rows.Count - 2)
    End If
    If Intersect(tbl, ActiveCell.EntireRow) Is Nothing Then
        MsgBox "Выделите ячейку в таблице"
        Exit Sub
    End If
    
    ' далее tbl это строка-образец, добавляем новую ниже её
    Set tbl = Intersect(tbl, ActiveCell.EntireRow)
    tbl.Offset(1).EntireRow.Insert
    tbl.Copy tbl.Offset(1)
    If Len(tbl.Cells(1, 2)) > 0 Then tbl.Offset(1).SpecialCells(xlCellTypeConstants).ClearContents
    tbl.Offset(1).Cells(1, 2).Select
End Sub
[/vba]Думаю, поправить остальные процедуры ТС сможет и сам...
К сообщению приложен файл: 10-34754-1.xlsb(39Kb)


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Пятница, 04.08.2017, 10:02
 
Ответить
СообщениеВ "умных таблицах" сложно будет вставлять данные "в середину", да и зачем усложнять?
Даже в имеющемся коде - не хватает только "зачистить получившуюся новую строку от значений, оставив формулы", это одна строчка... Но мы пойдем немного далее - поправим код на несколько более оптимальный :)
[vba]
Код
Sub ДобавлениеСтрокПротокол_ОТ()
    Dim tbl As Range, cell As Range
    
    ' проверим попадание в таблицу
    Set tbl = ActiveCell.CurrentRegion.Cells(1, 1).CurrentRegion
    If tbl.Rows.Count < 3 Then
        Set tbl = Nothing
    Else
        Set tbl = tbl.Offset(2).Resize(tbl.Rows.Count - 2)
    End If
    If Intersect(tbl, ActiveCell.EntireRow) Is Nothing Then
        MsgBox "Выделите ячейку в таблице"
        Exit Sub
    End If
    
    ' далее tbl это строка-образец, добавляем новую ниже её
    Set tbl = Intersect(tbl, ActiveCell.EntireRow)
    tbl.Offset(1).EntireRow.Insert
    tbl.Copy tbl.Offset(1)
    If Len(tbl.Cells(1, 2)) > 0 Then tbl.Offset(1).SpecialCells(xlCellTypeConstants).ClearContents
    tbl.Offset(1).Cells(1, 2).Select
End Sub
[/vba]Думаю, поправить остальные процедуры ТС сможет и сам...

Автор - AndreTM
Дата добавления - 04.08.2017 в 06:56
ProstaK Дата: Пятница, 04.08.2017, 08:35 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
AndreTM, Андрей, спасибо все работает.
 
Ответить
СообщениеAndreTM, Андрей, спасибо все работает.

Автор - ProstaK
Дата добавления - 04.08.2017 в 08:35
ProstaK Дата: Пятница, 04.08.2017, 09:45 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
AndreTM, возник вопрос по коду, приведенного Вами выше, при добавлении строки, если активная ячейка находится на пустой строке, добавляется строка, но при этом выкидывает ошибку "400", как можно этого избежать?
 
Ответить
СообщениеAndreTM, возник вопрос по коду, приведенного Вами выше, при добавлении строки, если активная ячейка находится на пустой строке, добавляется строка, но при этом выкидывает ошибку "400", как можно этого избежать?

Автор - ProstaK
Дата добавления - 04.08.2017 в 09:45
AndreTM Дата: Пятница, 04.08.2017, 09:51 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 496 ±
Замечаний: 0% ±

2003 & 2010
А никак. Пока будете использовать объединенные ячейки и копирование-вставку строк "по образцу" - никак не обойти это.
С другой стороны, вы НЕ ДОЛЖНЫ добавлять строки, если у вас и так есть "незаполненные" строки, можете обыграть этот момент...


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеА никак. Пока будете использовать объединенные ячейки и копирование-вставку строк "по образцу" - никак не обойти это.
С другой стороны, вы НЕ ДОЛЖНЫ добавлять строки, если у вас и так есть "незаполненные" строки, можете обыграть этот момент...

Автор - AndreTM
Дата добавления - 04.08.2017 в 09:51
ProstaK Дата: Пятница, 04.08.2017, 09:53 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
AndreTM, Ясно, я понимаю, что не должны добавляться строки, пока есть пустые, просто форму хочу отправить по подразделения, а там возникнут вопросы)))
В любом случае огромное спасибо!
 
Ответить
СообщениеAndreTM, Ясно, я понимаю, что не должны добавляться строки, пока есть пустые, просто форму хочу отправить по подразделения, а там возникнут вопросы)))
В любом случае огромное спасибо!

Автор - ProstaK
Дата добавления - 04.08.2017 в 09:53
AndreTM Дата: Пятница, 04.08.2017, 10:01 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 496 ±
Замечаний: 0% ±

2003 & 2010
Если у вас это "распространяемая форма" - то как вы вообще думаете дальше модифицировать и распространять код макросов так, чтобы не затрагивать уже имеющиеся данные? Подумайте и над этим...

А насчет "пустой строки" - то можно поправить код, как показано.
И, как я упоминал выше - заодно не забудьте и остальные макросы свои поисправлять, если надо.
К сообщению приложен файл: 8036048.xlsb(40Kb)


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеЕсли у вас это "распространяемая форма" - то как вы вообще думаете дальше модифицировать и распространять код макросов так, чтобы не затрагивать уже имеющиеся данные? Подумайте и над этим...

А насчет "пустой строки" - то можно поправить код, как показано.
И, как я упоминал выше - заодно не забудьте и остальные макросы свои поисправлять, если надо.

Автор - AndreTM
Дата добавления - 04.08.2017 в 10:01
ProstaK Дата: Пятница, 04.08.2017, 10:27 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
AndreTM, Единственное где данные могут сильно меняться это в списке, откуда впринципе не составит труда скопировать информацию и в случае необходимости вставить в новый файл.
Спасибо!


Сообщение отредактировал ProstaK - Пятница, 04.08.2017, 10:28
 
Ответить
СообщениеAndreTM, Единственное где данные могут сильно меняться это в списке, откуда впринципе не составит труда скопировать информацию и в случае необходимости вставить в новый файл.
Спасибо!

Автор - ProstaK
Дата добавления - 04.08.2017 в 10:27
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставка строк без значений (Макросы/Sub)
Страница 1 из 11
Поиск:

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