См. Конец для редактирования в ответ на комментарий PatricK.Перезапись и изменение размера массивов в Excel VBA
Извините, если это основной вопрос, но я искал здесь и на других сайтах и не могу найти ответ.
Это мой первый набег на массивы VBA (я новичок в VBA в целом), и я борюсь с некоторым синтаксисом. Я пытаюсь прочитать некоторые данные (часть одного столбца) из рабочего листа в массив, выполнить некоторую обработку на нем, записать его на другой лист и затем переписать массив с некоторыми данными, считываемыми с первого листа. Один из ключевых моментов состоит в том, что количество точек данных, считанных на итерацию, будет меняться (например, 4 точки данных в первом цикле, 3 на втором, возможно ...), и поэтому размер массива также должен измениться.
Моя попытка кода работает для первой итерации, но, похоже, она не забирает данные во втором цикле, а оставляет массив пустым. Вот мой код (извините, если это не формат должным образом, я только в настоящее время имеют доступ к интернету через мой телефон!):
Looping...
Dim DataSubSet
With ActiveWorkbook.Worksheets("Sheet1").Range("A" & CStr(I) & ":A" & CStr(io))
ReDim DataSubSet(1 To .Rows.Count, 1 To .Columns.Count)
DataSubSet = .Range ("A" & CStr(I) & ":A" & CStr(io))
End With
**Do processing**
End loop
Вот я и Ио переменные, которые определяют клетки, которые я заинтересован в; каждый из них меняется с помощью всеобъемлющего цикла.
Как я уже говорил, это работает только для первой итерации. Любые указатели на то, где я ошибся, будут оценены!
Спасибо заранее, Сэм
------------------------------------ -----------------------------------------------
PatricK, для дальнейшего уточнения, вот краткая рутина, которую я постучал, чтобы проиллюстрировать вашу мысль.
** проверка форматирования не удалась (все еще пишут по телефону), поэтому не позволял мне публиковать сообщения. Вот ссылка раздаточная в код в текстовом файле:
Hi Sam, массив автоматически изменяется при назначении его диапазону, поэтому строка 'ReDim' не нужна. Кроме того, попробуйте добавить '.Value' в строку назначения:' DataSubSet = .Range (...). Value'. Было бы полезно посмотреть, как обновлены 'io' и' I', вероятно, проблема там. – Ioannis
Привет, loannis, спасибо за ваш комментарий. Я подтвердил, что я и io работают правильно. PatricK ниже (каким-то образом) сумел решить проблему, но спасибо в любом случае! – user2829257