Как я могу скопировать формат ячейки в файл Excel в диапазоне? - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть этот лист Excel (изображение выше), и мне нужно обновлять его ежемесячно, и, как вы можете видеть, каждый месяц появляется новый столбец с новыми номерами. Потратив некоторое время, пытаясь разобраться с vba и расспросив, я с благодарностью получил этот код:

Sub Increment_Month()


    Dim lngLastCol As Long, lngRow As Long

    lngRow = ActiveCell.Row
    lngLastCol = Cells(lngRow, Columns.Count).End(xlToLeft).Column

    If IsDate(Cells(lngRow, lngLastCol)) Then
        With Union(Cells(3, lngLastCol + 1), Cells(17, lngLastCol + 1), Cells(32, lngLastCol + 1))
            .Value = DateAdd("M", 1, CDate(Cells(lngRow, lngLastCol)))
            .NumberFormat = Cells(lngRow, lngLastCol).NumberFormat
        End With
    End If

End Sub

Это увеличивает месяцы для меня, поэтому я могу нажать на кнопку, и в качестве заголовка у него будет следующий месяц. Теперь я застрял на том, как вставить форматирование предыдущих месяцев для следующих месяцев, то есть есть один макрос, который обновляет формат, без необходимости копировать формат для каждого месяца (границы, цветовые заголовки и т. Д.), Но макрос я получил только переписывает данные за последние месяцы, не переходя на месяц.

Извините, если это не имеет смысла (не стесняйтесь, чтобы я разъяснил это).

Спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Код ниже скопирует последний столбец справа и очистит содержимое. Затем он добавит один месяц к предыдущей дате и скопирует вашу формулу суммы (если у вас есть формула суммы). Я только прокрутил строку 7, чтобы охватить ваш первый набор данных, вы можете изменить при необходимости.

Dim lCol As Long
lCol = Cells(3, Columns.Count).End(xlToLeft).Column

Columns(lCol).Copy
Columns(lCol + 1).Insert Shift:=xlToRight
Columns(lCol + 1).ClearContents

    For Each cell In Range(Cells(3, lCol), Cells(7, lCol))
        If IsDate(cell.Value) Then
            cell.Offset(, 1).Value = DateAdd("m", 1, cell.Value)
        End If

        If cell.HasFormula = True Then
            cell.Copy
            cell.Offset(, 1).PasteSpecial Paste:=xlPasteFormulas
        End If
    Next cell

Application.CutCopyMode = False
0 голосов
/ 02 ноября 2018

VBA позволяет изменять цвет фона ячеек, используя следующий синтаксис. Приведенная ниже строка кода позволит вам установить цвет ячеек A1 и A10 в темно-синий.

Range("A1,A10").Cells.Interior.Color = RGB(0, 0, 125)

Вы можете использовать аналогичный синтаксис, чтобы получить диапазон и установить цвет фона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...