У меня есть код, который создает листы с некоторыми форматами. У меня проблема с тем, что форматирование не работает должным образом (например, оно меняет цвет другого диапазона или не объединяет ячейки).Код работает правильно, нажимая F8 и не нажимая F5
Я думал, что, может быть, я сделал что-то не в порядке или что-то в этом роде, поэтому начал нажимать F8 от начала до самого конца. И, делая это, он сделал ровно лист, как я хотел.
Мой код довольно длинный, есть много субтитров внутри, поэтому я попытаюсь написать, как он работает и вставить важные части. Если этого не будет достаточно, я поставлю здесь остальную часть моего кода.
- Он берет имя первого проекта из листа ResourcesProjects. Он хранится в переменной sResourcesProjectName (он работает правильно)
Затем он вызывает 3 подкаталога, которые создают 3 листа: ResourceSheet, DesignExecutionSheet и RisksSheet. Все эти субподрядчики имеют код для создания и форматирования созданного листа. Первый sub (ResourceSheet) работает правильно, форматирование точно так, как я хотел. Проблема заключается в подструкции DesignExecutionSheet и RisksSheet. Он не отформатирован хорошо, когда он переходит на F5.
Private Sub DesignExecutionSheet() Application.PrintCommunication = True ' Application.ScreenUpdating = False Application.DisplayAlerts = False Application.EnableEvents = False On Error Resume Next bSheetFound = False For Each wsSheet In ActiveWorkbook.Worksheets wsSheet.Activate sDesignSheetName = sResourcesProjectName & "_Design_Execution" If wsSheet.Name = sDesignSheetName Then ' --- if that sheet already exists, then exit sub and go to next project bSheetFound = True Exit Sub End If Next wsSheet Sheets.Add.Name = sResourcesProjectName & "_Design_Execution" Sheets(sDesignSheetName).Activate Cells.EntireColumn.Hidden = False Cells.EntireRow.Hidden = False Captions sResourcesProjectName & " Design & Execution", RGB(235, 241, 222) Columns("C:C").ColumnWidth = 3 Columns("D:D").ColumnWidth = 25 Rows("8:8").RowHeight = 25 Rows("12:12").RowHeight = 25 Rows("17:17").RowHeight = 25 Range("C8:E8,C12:E12,C17:E17").Select With Selection .HorizontalAlignment = xlLeft .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With Selection.Font.Bold = True With Selection.Font .Name = "Calibri" .Size = 12 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .Color = RGB(118, 147, 60) End With Range("C8:E8").FormulaR1C1 = "STATUS OF REQUIREMENTS" Range("C12:E12").FormulaR1C1 = "TEST EXECUTION" Range("C17:E17").FormulaR1C1 = "VIR/SCR" Range("9:9,10:10,13:13,14:14,15:15,18:18,19:19,20:20").Select Selection.RowHeight = 20 Range("C9:C10,C13:C15,C18:C20").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = RGB(235, 241, 222) End With Range("C9:E10,C13:E15,C18:E20").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ThemeColor = 1 .TintAndShade = -0.349986266670736 .Weight = xlThin End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ThemeColor = 1 .TintAndShade = -0.349986266670736 .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ThemeColor = 1 .TintAndShade = -0.349986266670736 .Weight = xlThin End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ThemeColor = 1 .TintAndShade = -0.349986266670736 .Weight = xlThin End With Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone Range("A6").Select Range("D9:D10,D13:D15,D18:D20").Select With Selection .HorizontalAlignment = xlRight .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False .Font.Color = RGB(89, 89, 89) End With Selection.Font.Bold = True Range("D9").Value = "ASSIGNED TO IT&V:" Range("D10").Value = "COVERED BY IT&V:" Range("D13").Value = "EXECUTED:" Range("D14").Value = "PASSED:" Range("D15").Value = "FAILED:" Range("D18").Value = "OPEN:" Range("D19").Value = "CLOSED:" Range("D20").Value = "VERIFIED:" Sheets(sDesignSheetName).Visible = xlSheetHidden 'Application.ScreenUpdating = True Application.DisplayAlerts = True Application.EnableEvents = True End Sub
с RisksSheet() есть аналогичная проблема, поэтому я не ставлю здесь код из этого подпункта.
После вызова этой подлодки, есть только это в коде:
'Application.ScreenUpdating = True Application.DisplayAlerts = True Application.EnableEvents = True End Sub
EDIT:
Я отредактировал мой код, как Любош Сук предложил. Теперь проблема другая. При нажатии F8 это работает снова правильно, но нажатие клавиши F5 есть ошибка «приложение или объект определяется ошибка» в строке
With Sheets(sDesignSheetName).Range("C8:E8,C12:E12,C17:E17")
Более того, эта ошибка не появляется, когда я поставил точку останова в основном в строке
Call DesignExecutionSheet
и нажмите F5 дважды.
Я также выяснил, что, когда у меня нет нескольких диапазонов (например, только «C8: E8» вместо «C8: E8, C12: E12, C17: E17»), он также работает. Но у меня много диапазонов внутри, код будет очень длинным, если я делю все эти диапазоны.
Это мой код:
Private Sub DesignExecutionSheet()
Application.PrintCommunication = True
' Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
'On Error Resume Next
bSheetFound = False
For Each wsSheet In ActiveWorkbook.Worksheets
'wsSheet.Activate
sDesignSheetName = sResourcesProjectName & "_Design_Execution"
If wsSheet.Name = sDesignSheetName Then ' --- if that sheet already exists, then exit sub and go to next project
bSheetFound = True
Exit Sub
End If
Next wsSheet
Sheets.Add.Name = sResourcesProjectName & "_Design_Execution"
'Sheets(sDesignSheetName).Activate
With Sheets(sDesignSheetName)
.Cells.EntireColumn.Hidden = False
.Cells.EntireRow.Hidden = False
Captions sResourcesProjectName & " Design & Execution", RGB(235, 241, 222)
.Columns("C:C").ColumnWidth = 3
.Columns("D:D").ColumnWidth = 25
.Rows("8:8").RowHeight = 25
.Rows("12:12").RowHeight = 25
.Rows("17:17").RowHeight = 25
End With
With Sheets(sDesignSheetName).Range("C8:E8,C12:E12,C17:E17")
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
.Font.Bold = True
End With
With Sheets(sDesignSheetName).Range("C8:E8,C12:E12,C17:E17").Font
.Name = "Calibri"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.Color = RGB(118, 147, 60)
End With
Sheets(sDesignSheetName).Range("C8:E8").FormulaR1C1 = "STATUS OF REQUIREMENTS"
Sheets(sDesignSheetName).Range("C12:E12").FormulaR1C1 = "TEST EXECUTION"
Sheets(sDesignSheetName).Range("C17:E17").FormulaR1C1 = "VIR/SCR"
Sheets(sDesignSheetName).Range("9:9,10:10,13:13,14:14,15:15,18:18,19:19,20:20").RowHeight = 20
With Sheets(sDesignSheetName).Range("C9:C10,C13:C15,C18:C20").Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = RGB(235, 241, 222)
End With
Sheets(sDesignSheetName).Range("C9:E10,C13:E15,C18:E20").Borders(xlDiagonalDown).LineStyle = xlNone
Sheets(sDesignSheetName).Range("C9:E10,C13:E15,C18:E20").Borders(xlDiagonalUp).LineStyle = xlNone
With Sheets(sDesignSheetName).Range("C9:E10,C13:E15,C18:E20").Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ThemeColor = 1
.TintAndShade = -0.349986266670736
.Weight = xlThin
End With
With Sheets(sDesignSheetName).Range("C9:E10,C13:E15,C18:E20").Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ThemeColor = 1
.TintAndShade = -0.349986266670736
.Weight = xlThin
End With
With Sheets(sDesignSheetName).Range("C9:E10,C13:E15,C18:E20").Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ThemeColor = 1
.TintAndShade = -0.349986266670736
.Weight = xlThin
End With
With Sheets(sDesignSheetName).Range("C9:E10,C13:E15,C18:E20").Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ThemeColor = 1
.TintAndShade = -0.349986266670736
.Weight = xlThin
End With
Sheets(sDesignSheetName).Range("C9:E10,C13:E15,C18:E20").Borders(xlInsideVertical).LineStyle = xlNone
Sheets(sDesignSheetName).Range("C9:E10,C13:E15,C18:E20").Borders(xlInsideHorizontal).LineStyle = xlNone
' .Range("A6").Select
With Sheets(sDesignSheetName).Range("D9:D10,D13:D15,D18:D20")
.HorizontalAlignment = xlRight
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
.Font.Color = RGB(89, 89, 89)
End With
Sheets(sDesignSheetName).Range("D9:D10,D13:D15,D18:D20").Font.Bold = True
Sheets(sDesignSheetName).Range("D9").Value = "ASSIGNED TO IT&V:"
Sheets(sDesignSheetName).Range("D10").Value = "COVERED BY IT&V:"
Sheets(sDesignSheetName).Range("D13").Value = "EXECUTED:"
Sheets(sDesignSheetName).Range("D14").Value = "PASSED:"
Sheets(sDesignSheetName).Range("D15").Value = "FAILED:"
Sheets(sDesignSheetName).Range("D18").Value = "OPEN:"
Sheets(sDesignSheetName).Range("D19").Value = "CLOSED:"
Sheets(sDesignSheetName).Range("D20").Value = "VERIFIED:"
Sheets(sDesignSheetName).Visible = xlSheetHidden
'Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub
Возможно, состояние гонки. Например. ваш код пытается что-то сделать, пока Excel все еще занят предыдущим запросом. –
Это 'On Error Resume Next' действительно не помогает вам. Там есть много простых ошибок - например, попытка создать лист, который уже существует, и не указывать правильное имя листа. – Rory
Хорошо, когда я редактировал свой код, появляется ошибка. Спасибо, что предложили. – GohanP