Преобразовать диапазон в массив - PullRequest
0 голосов
/ 12 октября 2018

У меня проблема с моим кодом. Я хочу получить все ячейки и поместить их в массив, но это не сработало.Ошибка выполнения 13. Диапазон -> Массив

For z = 0 To 3
Worksheets(Tabellen(z)).Select
AnzahlZellen = Application.WorksheetFunction.CountA(Range("A:A"))
    For n = 1 To AnzahlZellen

        'Worksheets(Tabellen(z)).Select'
        Range("A" & n).Select
        InhaltsArray(n) = Range("A" & n).Value

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Похоже, вы пытаетесь сохранить значения столбца А 4 листов в одном одномерном массиве,

dim i as long, n as long, z as long, tmp as variant

for z=lbound(Tabellen) to ubound(Tabellen)

    with Worksheets(Tabellen(z))
        if z=lbound(Tabellen) then
            InhaltsArray = application.transpose(.range(.cells(1, "A"), .cells(.rows.count, "A").end(xlup)).value2
        else
            tmp = .range(.cells(1, "A"), .cells(.rows.count, "A").end(xlup)).value2
            i = ubound(InhaltsArray)
            redim preserve InhaltsArray(lbound(InhaltsArray) to (i + ubound(tmp, 1)))
            for n = lbound(tmp, 1) to ubound(tmp, 1)
                InhaltsArray(i + n) = tmp(n, 1)
            next n
        end if

    end with

next z
0 голосов
/ 12 октября 2018

В этом случае вы можете создать одномерный массив, подобный этому

Dim vDat as variant
Dim rg as range
Set rg = Range("A1:A" & AnzahlZellen)
vDat = WorksheetFunction.Transpose((rg))

Таким образом, вы можете легко прочитать диапазон ячеек в массив.Вы также можете писать из массива в диапазон ячеек.Обычно вы получаете 2D-массив, но, поскольку у вас есть только один столбец, вы можете преобразовать его с помощью Transpose в 1D-массив.

Поскольку вы не отображали объявление InhaltsArray, я предполагаю, что ошибка времени выполнения 13 вызвано некоторым содержимым диапазона, который не соответствует типу данных InhaltsArray

В качестве дополнительного комментария к вашему коду: Большую часть времени вам не нужно выбирать

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