Ошибка несоответствия типов при импорте значений в массив - PullRequest
0 голосов
/ 08 февраля 2020

Я инициализирую массив и импортирую значения из указанного диапазона c. если диапазон больше одной строки, код работает нормально, НО, если диапазон только одна строка, я получаю ошибку:

Ошибка времени выполнения 13: Несоответствие типов

Код:

Sub test()

    Dim arr As Variant
    Dim i As Long, LastRow As Long

    With ThisWorkbook.Worksheets("Sheet1")

        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

        arr = .Range("A1:A" & LastRow)

        For i = LBound(arr) To UBound(arr)

        Next i

    End With

End Sub

Любая помощь будет оценена.

После ответа @JvdV мне удается преодолеть эту проблему, но я сталкиваюсь с другой:

при наличии более одной строки массив выглядит так:

enter image description here

Но при наличии только одной строки:

enter image description here

Как создать такую ​​же структуру массива - размеры?

1 Ответ

1 голос
/ 08 февраля 2020

Только с одной ячейкой у вас не будет массива. Включите локальные переменные, чтобы проверить это поведение.

Например, вы можете проверить, является ли arr массивом, или проверить значение LastRow. Например:

Sub test()

Dim arr As Variant
Dim i As Long, lr As Long

With ThisWorkbook.Worksheets("Sheet1")

    lr = .Cells(.Rows.Count, 1).End(xlUp).Row
    arr = Range("A1:A" & lr)

    If lr = 1 Then ReDim arr(1 To 1, 1 To 1): arr(1,1) = .Cells(1, 1)

    For i = LBound(arr) To UBound(arr)
        Debug.Print arr(i,1)
    Next i

End With

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