我有一个非常复杂的VBA项目相当大的工作簿。功能区工作簿不断崩溃Excel
工作簿还具有定制色带...
有在Workbook_Open事件相当很多发生得,不保护和再保护(userInterfaceOnly),隐藏和显示各种纸张,存储参考色带等
当宏没有自动启用时,工作簿打开,启用按钮出现,当我点击它时,所有事情都会发生。
问题出现在文件被信任时,并且宏自动运行。在这种情况下,它有一种使应用程序崩溃的倾向。
这就好像是,如果用户需要点击按钮的暂停,它会完成所有的Excel准备工作,显示功能区,然后执行我所有的Workbook_Open工作,但是如果没有启用按钮,Excel会自己启动东西并显示功能区似乎与我的Workbook_Open事件纠缠在一起,导致它崩溃。
这发生在2007年,2010年和2013年在Windows 7 & 8(0.1)
,我怀疑这是值得做的色带,因为有时问题并不完全崩溃,但是相反,工作簿打开,丝带区域只是空白。
FYI在Workbook_Open事件中的代码看起来是这样的:
enter code here
Private Sub Workbook_Open()
Dim newHour As Single
Dim newMinute As Single
Dim newSecond As Single
Dim waitTime As Date
Application.ScreenUpdating = False
' To activate the ribbon in v2007
Application.SendKeys "%Q{RETURN}"
Call ResetTheSheets
Splash.Visible = xlSheetVisible
Splash.Protect shtHidden.Range("iWord")
Call ShowHideSplash
ExecSumm.Visible = xlSheetVisible
GetStarted.Visible = xlSheetVisible
' Look at the properties in the Prop sheet to see what should be displayed
If Prop.Range("PropHideGetStarted") Then
On Error Resume Next
With ExecSumm
.Activate
'Range("C4").Select
.Unprotect Password:=shtHidden.[iWord]
.Visible = xlSheetVisible
.Range("A1:A" & .Range("LastRowCol").Row).EntireRow.Hidden = False
.Range(.Cells(1, 1), .Cells(1, .Range("LastRowCol").Column)).EntireColumn.Hidden = False
' Check to see if the template column has anything in
If WorksheetFunction.CountA(.Range("TemplateCol")) = 0 Then .Range("TemplateCol").EntireColumn.Hidden = True
' Check to see if the prior year should be hidden
If Not Prop.Range("PropBFbalances") Then .Range("ppTitle").EntireColumn.Hidden = True
.Activate
End With
Else
GetStarted.Select
End If
ActiveWindow.ScrollRow = 1
FormShow:
Err.Clear
On Error GoTo FormShow
frmSplash.Show msoFalse
shtHidden.Range("iBalance") = "TRUE"
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'' Schedule the start to avoid 'startup-crashes' - this didn't work as a way to prevent
' newHour = Hour(Now())
' newMinute = Minute(Now())
' newSecond = Second(Now()) + 1
' waitTime = TimeSerial(newHour, newMinute, newSecond)
' Application.Wait waitTime
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Err.Clear
On Error GoTo 0
Application.OnTime Now + TimeValue("00:00:01"), "StartUpMacro"
End Sub
您是否尝试过将所有开放代码移至StartUpMacro例程? – Rory 2014-10-07 12:05:31