VBA: «Ошибка автоматизации. Произошло исключение». при использовании UserForm - PullRequest
0 голосов
/ 13 мая 2019

Мой код копирует данные из разных рабочих книг в другие рабочие книги. Он просматривает 12 рабочих книг, в которые копируются данные, и каждая из этих 12 рабочих книг открывает (и закрывает) 6 файлов, из которых получает данные.

Первый шаг - я показываю пользователю пользовательскую форму, где он может выбрать год и квартал. Сам код работает, когда:

  1. Я опускаю форму пользователя и ввожу дату (= переменные qVar, yVar и fullDate) непосредственно внутри кода.

  2. Я оставляю в пользовательской форме, но уменьшаю количество рабочих книг с 12 до 7 или около того.

Если я использую пользовательскую форму со всеми 12 книгами, я получаю

"Ошибка автоматизации. Произошло исключение."

и Excel выключается. Рассматриваемая пользовательская форма состоит из комбинированного списка, рамки, в которой находятся 4 кнопки выбора и две кнопки управления.

Код для пользовательской формы (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

Кто-нибудь имеет представление о том, что мне следует делать или что я должен искать?

edit: Хорошо, теперь я получил новую ошибку: Excel вылетает с классическим сообщением об ошибке: «Microsoft Excel перестал работать» . Однажды Excel восстановил обновленные рабочие книги, что говорит мне: в тот раз это произошло для 10-й из 12 рабочих книг, после того как данные из 5 из 6 исходных файлов были скопированы. Однако это тот же код, что и для других рабочих книг. Во всяком случае, с тех пор, как Excel не восстанавливает ничего, кроме исходных файлов - либо это проблема с Excel, либо это означает, что мой код падает без изменения файлов. Без пользовательской формы код по-прежнему работает без проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...