Скопируйте данные, вставьте столбец и вставьте специальную формулу - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть лист, где я копирую столбец и вставляю его между определенными столбцами. После этого я применяю формулу.

У меня есть некоторое недопонимание в названии макроса, но в основном это добавление и удаление месяцев. У меня есть две кнопки ДОБАВИТЬ и УДАЛИТЬ. Таким образом, используя их, я могу добавлять и удалять месяцы по одному справа / слева. Мне нужны формулы для формул, чтобы следовать соответственно. Первая формула =IF(C31=""January"",B30+IF(C31=""January"",1,0),B30) отвечает за подсчет лет, поэтому после каждого января год меняется на следующий 2020, 2021, 2022, 2023 и т. Д. 1032 *. Вторая формула для SUM более проста.

Вот мой текущий код для добавления:

Sub Add_One_Year_CF()

    Application.ScreenUpdating = False

    Dim lColumn As Long

    With CashflowSheet
        .Range("K:K").Copy
        .Columns("J:J").Insert Shift:=xlToRight
    End With

    lColumn = CashflowSheet.Cells(33, Columns.Count).End(xlToLeft).Column

    CashflowSheet.Range(Cells(30, 3), Cells(30, lColumn)).Formula = "=IF(C31=""January"",B30+IF(C31=""January"",1,0),B30)"
    CashflowSheet.Range(Cells(36, 3), Cells(36, lColumn)).Formula = "=C34+B36"

    Application.ScreenUpdating = True

End Sub

Вот код для удаления:

Sub Remove_One_Year_CF()

    Application.ScreenUpdating = False

    Dim lc As Long

    With CashflowSheet
        lc = .Cells(30, .Columns.Count).End(xlToLeft).Column
        If lc > 13 Then
            With .Range(.Cells(30, lc), .Cells(30, lc))
                .EntireColumn.Delete
            End With
        Else
            'msg no more columns to clear
        End If
    End With

    Application.ScreenUpdating = True

End Sub

Это прекрасно работает для первый запуск Поэтому, если я выполняю макрос Add (для N раз), он работает, тогда я выполняю макрос макросов (пока он не остановится в столбце 13). Затем я снова пытаюсь выполнить команду «Добавить», и после определенного цикла «Добавить» у меня появляются ошибки в ячейках, начиная со столбца J.

enter image description here

Что может быть проблема?

PS В строке 30 есть данные (цвет шрифта просто белый)


РЕДАКТИРОВАТЬ:

Я шел к другому номер и получил представление ... что если моя переменная неверна.

Это рабочее решение. SJR были правы около 33 и 30 ... Это была проблема.

Sub Add_One_Year_CF()

    Application.ScreenUpdating = False

    With CashflowSheet
        .Range("K:K").Copy
        .Columns("J:J").Insert Shift:=xlToRight
    End With

    CashflowSheet.Range(Cells(30, 3), Cells(30, CashflowSheet.Cells(30, Columns.Count).End(xlToLeft).Column)).Formula = "=IF(C31=""January"",B30+IF(C31=""January"",1,0),B30)"
    CashflowSheet.Range(Cells(36, 3), Cells(36, CashflowSheet.Cells(36, Columns.Count).End(xlToLeft).Column)).Formula = "=C34+B36"

    Application.ScreenUpdating = True

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