Получение ошибки несоответствия типов во время выполнения 13 при работе с массивом - PullRequest
0 голосов
/ 19 сентября 2019

Итак, я не так давно столкнулся с проблемой с массивами в VBA, которую мне удалось исправить.Однако я не могу понять, почему исправление сработало, поскольку логически я говорил VBA точно то же самое.Никто из людей в моем офисе, которые пишут код на VBA, не может ответить на этот вопрос.

Проблема заключается в том, что я хочу взять данные из таблицы, сохранить их в массиве и затем скопировать в другую таблицу.Приведенный ниже код отлично подходит для этого, как и должно быть, поскольку это простая задача, если в таблице не менее 2 строк.Если таблица содержит только 1 строку, она выплевывает:

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

Я прокомментировал исправление в приведенном ниже операторе if, так что вы можете увидетьчто это исправляет.Если в таблице есть одна строка данных и, скажем, 1 столбец, я переименовываю массив как 1,1 для размера.Это должно соответствовать таблице, в которую я хочу скопировать данные, если это также 1 строка и 1 столбец.Тем не менее, это не позволит мне просто сделать MyArray() = new table range.Я должен конкретно сказать, что если есть 1 строка, то выполните MyArray(nr, 1), что для меня то же самое, поскольку массив все равно перенаправляется как nr, 1.

Что мне здесь не хватает?

Option Explicit
Option Base 1

Sub test()

Dim MyArray() As Variant
Dim nr As Integer

nr = Range("Tbl_Test[Data]").Rows.Count

ReDim MyArray(nr, 1)

MyArray() = Range("Tbl_Test[Data]")

    'If nr = 1 Then
        'MyArray(nr, 1) = Range("Tbl_Test[Data]")
    'Else:
        'MyArray() = Range("Tbl_Test[Data]")
    'End If

Range("Tbl_Test2[Data]") = MyArray()

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