У меня есть лист, где я копирую столбец и вставляю его между определенными столбцами. После этого я применяю формулу.
У меня есть некоторое недопонимание в названии макроса, но в основном это добавление и удаление месяцев. У меня есть две кнопки ДОБАВИТЬ и УДАЛИТЬ. Таким образом, используя их, я могу добавлять и удалять месяцы по одному справа / слева. Мне нужны формулы для формул, чтобы следовать соответственно. Первая формула =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.
Что может быть проблема?
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