Я пытаюсь создать динамический массив. Причина, по которой мне нужно использовать динамический массив, заключается в том, что я не знаю, сколько переменных должно быть в массиве в начале.
После того, как массив существует, я хочу проанализировать диапазоны в массиве и иногда выделять только одно значение ячейки для одного из диапазонов. К сожалению, я получаю ошибку Object Required.
Я уже проверял этот сайт и другие, и не могу найти объяснение. Возможно, люди называют действия как-то иначе.
Sub get_val()
'get the number of rows
Dim id As Worksheet
Set id = ThisWorkbook.Sheets("ID Sheet")
rc = id.Range("B:B").Find(What:="*", After:=id.Range("B1"), LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).row
'Find which ones have "yes" in column Q and create an array
Dim memcache As Variant
Dim x As Integer
x = 1
ReDim memcache(x)
For i = 3 To rc
If id.Cells(i, 17).Value = "Yes" Then
ReDim Preserve memcache(x)
memcache(x) = id.Range("A" & i & ":M" & i)
x = x + 1
End If
Next i
«Здесь я сталкиваюсь с проблемами.
«Если я хочу скопировать один из диапазонов в другой диапазон на листе, это прекрасно работает
id.Range("A50:M50").Value = memcache(2) 'this works
'Однако, если я хочу просто найти значение одной ячейки в диапазоне, это не сработает. Это приводит к ошибке «Требуется объект».
Debug.Print memcache(2).Cells(1, 2).Value
'Для сравнения будет работать один диапазон
Dim cellrange As Variant
Set cellrange = id.Range("A9:M19")
Debug.Print cellrange.Cells(1, 2).Value ' this will work
End Sub
Я хотел бы иметь возможность получать значения ячеек (1,2) в каждом диапазоне, сохраненном в массиве, и, если они соответствуют определенному условию, я буду обновлять другой диапазон на листе с полным диапазоном в этом сохраненном массиве.