Я создал инструмент прогнозирования стоимости контракта для своей команды, и кроме этой одной проблемы он работает блестяще!Я выделил макрос, который вызывает ошибку, но я не могу определить точную причину и способы ее устранения.
После того, как пользователь выполнил свой первый прогноз / прогнозируемый денежный поток, он нажимает «Блокировать оригинал»."кнопка, которая запускает макрос 'LockOriginal' (включен ниже).Цель состоит в том, чтобы скопировать рабочий лист, содержащий этот первоначальный прогноз, для последующего использования (удаление формул и т. Д., Чтобы это были только значения).Пользователь сохранит и закроет документ и вернется к нему ежемесячно для создания нового прогноза затрат.
Однако при первом открытии документа (это «после» создания его из шаблона, блокировкаоригинал и сохранение / закрытие документа) Excel вылетает.Пользователь может заставить Excel загрузить «отремонтированную» версию документа.Состояние исправления: Восстановленные записи: Таблица из /xl/tables/table2.xml part (Таблица). После этого момента, после сохранения документа, он работает нормально до конца своей жизни.
Есть ли что-то вкак я кодировал эти действия, которые вызывают ошибку?
Sub LockOriginal()
If MsgBox("This action cannot be undone. Are you certain you want to proceed?", vbYesNo) = vbNo Then Exit Sub
Application.ScreenUpdating = False
'Overwrite fomulas in Original/Baseline with current forecast values
Sheets("Summary").Range("ForecastValuesOriginal").Value = Sheets("Summary").Range("ForecastValuesCurrent").Value
Sheets("Summary").Range("ForecastValuesBaseline").Value = Sheets("Summary").Range("ForecastValuesCurrent").Value
'Delete features for locking Original again
ActiveWorkbook.Names("ForecastValuesOriginal").Delete
Sheets("Forecast").Select
ActiveSheet.Shapes.Range(Array("Lock Original Button")).Delete
'Duplicate sheet, rename to "Original", and convert formulas to values
Sheets("Forecast").Copy After:=Sheets(5)
ActiveSheet.Name = "Original"
ActiveSheet.Tab.ColorIndex = 48
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
With Selection.Font
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
With Selection.Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.149998474074526
.PatternTintAndShade = 0
End With
Range("A4").Select
ActiveCell.FormulaR1C1 = "ORIGINAL FORECAST (LOCKED) - USE ONLY AS REFERENCE"
Range("A1").Select
Application.CutCopyMode = False
'Delete named ranges in new worksheet
Dim RangeName As Name
On Error Resume Next
For Each RangeName In Names
ActiveSheet.Names(RangeName.Name).Delete
Next
On Error GoTo 0
'Tidy up
Range("A1").Select
Sheets("Forecast").Select
Range("A1").Select
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub