我的代码将数据从不同的工作簿复制到其他工作簿。它循环遍历12个工作簿,将数据复制到其中,并且这12个工作簿中的每一个都打开(和关闭)6个文件,以从中获取数据。
第一步是向用户显示一个用户窗体,用户可以在其中选择年份和季度。该代码本身在以下情况下起作用:
我省去了用户窗体,并直接在代码内部输入了日期(=变量qVar
,yVar
和fullDate
)。
我保留在用户窗体中,但将工作簿的数量从12个减少到了7个左右。
如果我将UserForm与所有12个工作簿一起使用,则会得到
“自动化错误。发生异常。”
,Excel将关闭。有问题的UserForm包含一个组合框,一个框架,该框架上有4个选项按钮和两个命令按钮。
UserForm的代码(qVar
,yVar
和fullDate
是全局变量):
Private Sub cmdCancel_Click()
Unload Me
End Sub
Private Sub cmdOk_Click()
Dim QuartalStr As String
Dim oControl As Control
If cboJahr.Value = "" Then
MsgBox "Select year"
Exit Sub
End If
For Each oControl In frmQuartalsauswahl.fraQuartale.Controls
If oControl.Value = True Then
qVar = oControl.Caption
End If
Next oControl
yVar = CStr(cboJahr.Value)
Select Case qVar
Case "Q1"
fullDate = yVar & ".03.31"
Case "Q2"
fullDate = yVar & ".06.30"
Case "Q3"
fullDate = yVar & ".09.30"
Case "Q4"
fullDate = yVar & ".12.31"
End Select
Unload Me
Call QuarterlyReport.WithUserForm
End Sub
Private Sub UserForm_Initialize()
Dim yearsArray() As Integer
Dim startyear As Integer
Dim i As Integer
startyear = 2017
i = 0
Do While startyear <= Year(Date)
ReDim Preserve yearsArray(i)
yearsArray(i) = startyear
startyear = startyear + 1
i = i + 1
Loop
cboJahr.List = yearsArray
End Sub
有人知道我应该做什么或应该寻找什么吗?
编辑:好吧,现在我遇到了一个新错误:Excel崩溃,并显示经典错误消息:"Microsoft Excel has stopped working"。一次,Excel恢复了更新的工作簿,这告诉我:那一次是在复制6个源文件中的5个数据后,在12个工作簿中的第10个发生了。但是,这与其他工作簿的代码相同。无论如何,既然Excel除了原始文件之外什么都不会恢复-这是Excel的问题,或者这意味着我的代码在不更改文件的情况下崩溃了。没有用户窗体,代码仍然可以正常工作。