Передача диапазона в динамический массив дает ошибку времени выполнения 1004 - PullRequest
0 голосов
/ 24 мая 2018

Попытка скопировать диапазон из одной рабочей книги в другую - в процессе будут выполняться другие задачи с набором данных, но это суть того, чего я хочу сейчас.Диапазон в исходной рабочей книге не является статичным;Это означает, что каждый раз при создании отчета необходимая информация будет отображаться в тех же столбцах, но не в тех же строках.В середине диапазона есть один пустой столбец и несколько столбцов, которые я буду игнорировать - наряду с некоторыми вычислениями / преобразованием данных.Чтобы попытаться помочь с несколько непредсказуемым характером расположения данных в исходной рабочей книге, я назвал свой диапазон как переменную в подпрограмме - я не уверен, что это проблема.Кажется, все работает, кроме случаев, когда я помещаю диапазон в массив.Вот что у меня есть:

    Sub GetElemArray()

        Dim fndrng As Range
        Dim rEleAn As Range
        Dim frst As Range

        'the rest of the variables below are global

        Workbooks(SheetName).Activate
        Worksheets("Report").Activate
        Columns(2).Select

        Set fndrng = Selection.Find("Analyte")
        Set frst = fndrng.Offset(1, 0)
        Set rEleAn = Range(frst, fndrng.End(xlDown).End(xlToRight))

        EleList = rEleAn.Rows.Count
        ColList = rEleAn.Columns.Count
        ReDim ElAr(0 To EleList, 0 To ColList)

        For EleList = LBound(ElAR, 1) To UBound(ElAr, 1)
            For ColList = LBound(ElAr, 2) To UBound(ElAr, 2)

                'The following line returns the Runtime 1004 error
                ElAr(EleList, ColList) = Range(frst).Offset(EleList, _ 
                  ColList).Value
            Next ColList
        Next EleList

    Code to Do Other Stuff
    End Sub

Просматривая окно Locals, я вижу, что rEleAn хранит свои значения как .Value2.Я попытался изменить Range на это свойство, и оно все равно вернуло ту же ошибку.Глядя в окно «Местные жители», все правильно расположено рядом, насколько я могу судить.

Есть идеи относительно того, что происходит?

1 Ответ

0 голосов
/ 24 мая 2018

Если я правильно понимаю ваш комментарий, попробуйте:

Sub GetElemArray()

            Dim fndrng As Range
            Dim rEleAn As Range
            Dim frst As Range

            'the rest of the variables below are global
            Set fndrng = Worksheets("Report").Columns(2).Find("Analyte")
            Set frst = fndrng.Offset(1, 0)
            Set rEleAn = Range(frst, fndrng.End(xlDown).End(xlToRight))
            ElAr = rEleAn

        'Code to Do Other Stuff
    End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...