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

Вход

Регистрация

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

 

= Мир MS Excel/Копирование формата ячеек для новой сроки умной таблицы - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование формата ячеек для новой сроки умной таблицы (Макросы/Sub)
Копирование формата ячеек для новой сроки умной таблицы
neonar Дата: Среда, 26.12.2018, 19:19 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день!
В прикрепленном файле умная таблица.
Добавление строк, удаление производится с помощью кнопок над ней.
При добавлении новой строки кнопами "добавить" и "добавить строку выше"
НЕКОТОРЫЕ ячейки добавленной строки не копируют формат существующих ячеек существующей строки.
Например, число выравнивается не по центру, а по левому краю формат даты не "15 янв", как в сущ. строках,
а 15.01.2018 и т.д.

Вопрос: как сделать так чтобы формат всегда копировался из предыдущей строки (подразумевается что формат соответствующих ячеек
для каждой строки не меняется для всей таблицы)
К сообщению приложен файл: 4416327.xlsm (54.5 Kb)
 
Ответить
СообщениеДобрый день!
В прикрепленном файле умная таблица.
Добавление строк, удаление производится с помощью кнопок над ней.
При добавлении новой строки кнопами "добавить" и "добавить строку выше"
НЕКОТОРЫЕ ячейки добавленной строки не копируют формат существующих ячеек существующей строки.
Например, число выравнивается не по центру, а по левому краю формат даты не "15 янв", как в сущ. строках,
а 15.01.2018 и т.д.

Вопрос: как сделать так чтобы формат всегда копировался из предыдущей строки (подразумевается что формат соответствующих ячеек
для каждой строки не меняется для всей таблицы)

Автор - neonar
Дата добавления - 26.12.2018 в 19:19
StoTisteg Дата: Четверг, 27.12.2018, 11:31 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Если добавление всё равно идёт кнопками, так сделайте в плюс к добавлению принудительное копирование форматов через PasteSpecial из заведомо существующей строки, второй, например. Типа [vba]
Код
Rows(2).Copy
Rows(rw).PasteSpecial xlPasteFormats 'rw — номер новой вставленной строки
Application.CutCopyMode = False
[/vba]


Интуитивно понятный код - это когда интуитивно понятно, что это код.

Сообщение отредактировал StoTisteg - Четверг, 27.12.2018, 11:34
 
Ответить
СообщениеЕсли добавление всё равно идёт кнопками, так сделайте в плюс к добавлению принудительное копирование форматов через PasteSpecial из заведомо существующей строки, второй, например. Типа [vba]
Код
Rows(2).Copy
Rows(rw).PasteSpecial xlPasteFormats 'rw — номер новой вставленной строки
Application.CutCopyMode = False
[/vba]

Автор - StoTisteg
Дата добавления - 27.12.2018 в 11:31
neonar Дата: Четверг, 27.12.2018, 13:06 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
StoTisteg , спасибо! Немного поколдовал и заработало!

Но этот способ я так понимаю не связан с умной таблицей, а мы выходим на уровень листа excel.

В принципе он меня устраивает, но может еще кто-то подскажет другой способ. Просто чисто из любопытства.

Прикладываю файл как я встроил Ваши строчки кода в свой, может кому-то пригодится.

Реальная таблица у меня в другом файле, у нее много столбцов что не влезают на экран, удобнее добавлять строки кнопками, чем
прокручивать и растягивать.
К сообщению приложен файл: 2020297.xlsm (54.4 Kb)
 
Ответить
СообщениеStoTisteg , спасибо! Немного поколдовал и заработало!

Но этот способ я так понимаю не связан с умной таблицей, а мы выходим на уровень листа excel.

В принципе он меня устраивает, но может еще кто-то подскажет другой способ. Просто чисто из любопытства.

Прикладываю файл как я встроил Ваши строчки кода в свой, может кому-то пригодится.

Реальная таблица у меня в другом файле, у нее много столбцов что не влезают на экран, удобнее добавлять строки кнопками, чем
прокручивать и растягивать.

Автор - neonar
Дата добавления - 27.12.2018 в 13:06
StoTisteg Дата: Четверг, 27.12.2018, 13:13 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
neonar, можно и к ListObjects привязаться, но зачем? Разве только их у Вас на листе несколько и они по строкам перекрываются...


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
Сообщениеneonar, можно и к ListObjects привязаться, но зачем? Разве только их у Вас на листе несколько и они по строкам перекрываются...

Автор - StoTisteg
Дата добавления - 27.12.2018 в 13:13
neonar Дата: Четверг, 27.12.2018, 13:19 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
StoTisteg, таблица одна, но кто знает в будущем может и добавлю другую пока не планирую.
В любом случае спасибо.
 
Ответить
СообщениеStoTisteg, таблица одна, но кто знает в будущем может и добавлю другую пока не планирую.
В любом случае спасибо.

Автор - neonar
Дата добавления - 27.12.2018 в 13:19
StoTisteg Дата: Четверг, 27.12.2018, 13:45 | Сообщение № 6
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
в будущем может и добавлю другую
Тогда вот Вам на всякий случай вставка и копирование форматов с привязкой к ListObjects:[vba]
Код
   With ActiveSheet.ListObjects(1)
      .ListRows.Add Position:=rw, alwaysinsert:=True 'rw — относительная позиция ряда: заголовок — 0, первая строка — 1 и т. д.
      .ListRows(1).Range.Copy
      .ListRows(rw).Range.PasteSpecial xlPasteFormats
      Application.CutCopyMode = False
   End With
[/vba]


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
Сообщение
в будущем может и добавлю другую
Тогда вот Вам на всякий случай вставка и копирование форматов с привязкой к ListObjects:[vba]
Код
   With ActiveSheet.ListObjects(1)
      .ListRows.Add Position:=rw, alwaysinsert:=True 'rw — относительная позиция ряда: заголовок — 0, первая строка — 1 и т. д.
      .ListRows(1).Range.Copy
      .ListRows(rw).Range.PasteSpecial xlPasteFormats
      Application.CutCopyMode = False
   End With
[/vba]

Автор - StoTisteg
Дата добавления - 27.12.2018 в 13:45
_Boroda_ Дата: Четверг, 27.12.2018, 14:08 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
neonar, пример для добавления выше
[vba]
Код
Sub tt()
    With ActiveSheet.ListObjects(1)
        Set d = Intersect(.Range, Selection)
        If d Is Nothing Then Exit Sub
        c_ = .Range.Column
        nc_ = .Range.Columns.Count
        r_ = d(1).Row
    End With
    With Cells(r_, c_).Resize(, nc_)
        .Copy
        .Insert Shift:=xlUp
        .Offset(-1).SpecialCells(xlCellTypeConstants, 23).ClearContents
    End With
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщениеneonar, пример для добавления выше
[vba]
Код
Sub tt()
    With ActiveSheet.ListObjects(1)
        Set d = Intersect(.Range, Selection)
        If d Is Nothing Then Exit Sub
        c_ = .Range.Column
        nc_ = .Range.Columns.Count
        r_ = d(1).Row
    End With
    With Cells(r_, c_).Resize(, nc_)
        .Copy
        .Insert Shift:=xlUp
        .Offset(-1).SpecialCells(xlCellTypeConstants, 23).ClearContents
    End With
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 27.12.2018 в 14:08
neonar Дата: Четверг, 27.12.2018, 16:25 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
StoTisteg, _Boroda_ спасибо большое все работает. С наступающим! :)
 
Ответить
СообщениеStoTisteg, _Boroda_ спасибо большое все работает. С наступающим! :)

Автор - neonar
Дата добавления - 27.12.2018 в 16:25
neonar Дата: Четверг, 27.12.2018, 23:04 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Возникла еще небольшая проблема по поводу добавления строки выше - относительные ссылки начинают сбоить для вычисления
формулы.
(см. приложенный файл). Количество груш в текущей строке (например, строка 3) вычисляется как сумма предыдущего числа груш (строка 2) + текущее количество яблок (строка 3)
Но если вставить выше 3 строки с помощью кнопки ДОБАВИТЬ СТРОКУ ВЫШЕ новую строку, то этот механизм (в теперь уже в 4 строке) после добавления начинает сбоить -
формула считает неправильно кол-во груш в 4 строке - относительная ссылка предыдущего числа груш не переезжает в добавленную строку. Как это можно поправить?
Заранее благодарю.
 
Ответить
СообщениеВозникла еще небольшая проблема по поводу добавления строки выше - относительные ссылки начинают сбоить для вычисления
формулы.
(см. приложенный файл). Количество груш в текущей строке (например, строка 3) вычисляется как сумма предыдущего числа груш (строка 2) + текущее количество яблок (строка 3)
Но если вставить выше 3 строки с помощью кнопки ДОБАВИТЬ СТРОКУ ВЫШЕ новую строку, то этот механизм (в теперь уже в 4 строке) после добавления начинает сбоить -
формула считает неправильно кол-во груш в 4 строке - относительная ссылка предыдущего числа груш не переезжает в добавленную строку. Как это можно поправить?
Заранее благодарю.

Автор - neonar
Дата добавления - 27.12.2018 в 23:04
neonar Дата: Четверг, 27.12.2018, 23:05 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Файл тут
К сообщению приложен файл: _3.xlsm (56.6 Kb)
 
Ответить
СообщениеФайл тут

Автор - neonar
Дата добавления - 27.12.2018 в 23:05
StoTisteg Дата: Пятница, 28.12.2018, 12:44 | Сообщение № 11
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
neonar, точно не скажу, но это уже похоже на другой вопрос, для другой темы...


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
Сообщениеneonar, точно не скажу, но это уже похоже на другой вопрос, для другой темы...

Автор - StoTisteg
Дата добавления - 28.12.2018 в 12:44
neonar Дата: Пятница, 28.12.2018, 12:48 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
StoTisteg, я знаю просто не хочу новую тему создавать чтобы не плодить. Нарушу правила какие-нибудь форума. Стоит все-таки создать?
 
Ответить
СообщениеStoTisteg, я знаю просто не хочу новую тему создавать чтобы не плодить. Нарушу правила какие-нибудь форума. Стоит все-таки создать?

Автор - neonar
Дата добавления - 28.12.2018 в 12:48
_Boroda_ Дата: Пятница, 28.12.2018, 12:54 | Сообщение № 13
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А что по этому поводу в Правилах форума (которые Вы читали, я надеюсь :D ) написано?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА что по этому поводу в Правилах форума (которые Вы читали, я надеюсь :D ) написано?

Автор - _Boroda_
Дата добавления - 28.12.2018 в 12:54
neonar Дата: Пятница, 28.12.2018, 13:12 | Сообщение № 14
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, получается нарушил правила, что не создал новую тему :)

З.Ы. Создал новую тему
 
Ответить
Сообщение_Boroda_, получается нарушил правила, что не создал новую тему :)

З.Ы. Создал новую тему

Автор - neonar
Дата добавления - 28.12.2018 в 13:12
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование формата ячеек для новой сроки умной таблицы (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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