VBA:“自动化错误。发生异常。”使用用户窗体

时间:2019-05-13 08:05:17

标签: excel vba

我的代码将数据从不同的工作簿复制到其他工作簿。它循环遍历12个工作簿,将数据复制到其中,并且这12个工作簿中的每一个都打开(和关闭)6个文件,以从中获取数据。

第一步是向用户显示一个用户窗体,用户可以在其中选择年份和季度。该代码本身在以下情况下起作用:

  1. 我省去了用户窗体,并直接在代码内部输入了日期(=变量qVaryVarfullDate)。

  2. 我保留在用户窗体中,但将工作簿的数量从12个减少到了7个左右。

如果我将UserForm与所有12个工作簿一起使用,则会得到

  

“自动化错误。发生异常。”

,Excel将关闭。有问题的UserForm包含一个组合框,一个框架,该框架上有4个选项按钮和两个命令按钮。

UserForm的代码(qVaryVarfullDate是全局变量):

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的问题,或者这意味着我的代码在不更改文件的情况下崩溃了。没有用户窗体,代码仍然可以正常工作。

0 个答案:

没有答案
相关问题